<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Täpp-Anders  - Senaste ändringarna [sv]</title>
		<link>http://wiki.sikvall.se/index.php/Special:Senaste_%C3%A4ndringar</link>
		<description>Följ de senaste ändringarna i wikin i detta flöde.</description>
		<language>sv</language>
		<generator>MediaWiki 1.43.0</generator>
		<lastBuildDate>Sun, 12 Apr 2026 08:47:32 GMT</lastBuildDate>
		<item>
			<title>Racket/RLE</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/RLE&amp;diff=1849&amp;oldid=1848</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/RLE&amp;diff=1849&amp;oldid=1848</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 11 april 2026 kl. 14.45&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l20&quot;&gt;Rad 20:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 20:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;; --help visar en enkel hjälptext&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;; --help visar en enkel hjälptext&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;; --test kör en enkel sån därn JOONIT TÄST di kallart&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;; --test kör en enkel sån därn JOONIT TÄST di kallart&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Saker som kan göras bättre:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Det finns ganska lite felkontroll och vad du kastar på dekodern kommer den försöka&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; tills det skiter sig.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Man kan också tänka sig att använda mer än en byte för antal i binärt mode&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; men också en grej är ju att man aldrig kommer koda för 0 tecken så man kunde&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; ju lika gärna koda för 1-256 i stället för 0-255. Jag har struntat i det.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;;;;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;;;;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Sat, 11 Apr 2026 14:45:36 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/RLE</comments>
		</item>
		<item>
			<title>Racket/RLE</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/RLE&amp;diff=1848&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/RLE&amp;diff=1848&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt;  #lang racket  ;;;;; ;; RLE – Run Length Encoder ;; ;; I/O via stdio &amp;lt;infil &amp;gt;utfil ;; ;; Kodar data genom att räkna antal förekomster av samma tecken/byte i rad och ;; ersätter den med ett cons-par (antal . tecken) tills nästa förekomst finns. ;; Kan operera binärt men med begränsningen av max 255 bytes konsekutivt sedan ;; startas en ny ram. ;; ;; racket rle.rkt [ --encode | --decode | --help ] [ --binary ] &amp;lt; infil &amp;gt; utfil ;; ;; --encode kodar stdin till...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#lang racket&lt;br /&gt;
&lt;br /&gt;
;;;;;&lt;br /&gt;
;; RLE – Run Length Encoder&lt;br /&gt;
;;&lt;br /&gt;
;; I/O via stdio &amp;lt;infil &amp;gt;utfil&lt;br /&gt;
;;&lt;br /&gt;
;; Kodar data genom att räkna antal förekomster av samma tecken/byte i rad och&lt;br /&gt;
;; ersätter den med ett cons-par (antal . tecken) tills nästa förekomst finns.&lt;br /&gt;
;; Kan operera binärt men med begränsningen av max 255 bytes konsekutivt sedan&lt;br /&gt;
;; startas en ny ram.&lt;br /&gt;
;;&lt;br /&gt;
;; racket rle.rkt [ --encode | --decode | --help ] [ --binary ] &amp;lt; infil &amp;gt; utfil&lt;br /&gt;
;;&lt;br /&gt;
;; --encode kodar stdin till stdout lisp style om inte --binary används&lt;br /&gt;
;; --decode avkodar stdin till stdout lisp style om inte --binary används&lt;br /&gt;
;; --binary skriver kodad data binärt, läser binär data för avkodning&lt;br /&gt;
;; --help visar en enkel hjälptext&lt;br /&gt;
;; --test kör en enkel sån därn JOONIT TÄST di kallart&lt;br /&gt;
;;;;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;; --- Kärnlogik ---&lt;br /&gt;
&lt;br /&gt;
;; Grupperar element&lt;br /&gt;
(define (pack-limited lst)&lt;br /&gt;
  (cond [(empty? lst) &amp;#039;()]&lt;br /&gt;
        [else &lt;br /&gt;
         (let-values ([(prefix suffix) (splitf-at lst (lambda (x) (equal? x (first lst))))])&lt;br /&gt;
           (if (&amp;gt; (length prefix) 255)&lt;br /&gt;
               ;; Om gruppen är för lång, hugg av vid 255 och fortsätt med resten&lt;br /&gt;
               (cons (take prefix 255) (pack-limited (append (drop prefix 255) suffix)))&lt;br /&gt;
               ;; Annars, fortsätt som vanligt&lt;br /&gt;
               (cons prefix (pack-limited suffix))))]))&lt;br /&gt;
&lt;br /&gt;
(define (encode lst)&lt;br /&gt;
  (map (lambda (group) (list (length group) (first group))) &lt;br /&gt;
       (pack-limited lst)))&lt;br /&gt;
&lt;br /&gt;
(define (decode lst)&lt;br /&gt;
  (append-map (lambda (entry) (make-list (first entry) (second entry))) &lt;br /&gt;
              lst))&lt;br /&gt;
&lt;br /&gt;
;; --- Binär I/O ---&lt;br /&gt;
&lt;br /&gt;
(define (write-binary encoded-data)&lt;br /&gt;
  (for ([pair encoded-data])&lt;br /&gt;
    (write-byte (first pair))&lt;br /&gt;
    (write-byte (second pair))))&lt;br /&gt;
&lt;br /&gt;
(define (read-binary)&lt;br /&gt;
  (let ([count (read-byte)])&lt;br /&gt;
    (if (eof-object? count)&lt;br /&gt;
        &amp;#039;()&lt;br /&gt;
        (let ([val (read-byte)])&lt;br /&gt;
          (cons (list count val) (read-binary))))))&lt;br /&gt;
&lt;br /&gt;
;; --- Körlägen ---&lt;br /&gt;
&lt;br /&gt;
(define (run-encode binary?)&lt;br /&gt;
  (let* ([input (port-&amp;gt;bytes (current-input-port))]&lt;br /&gt;
         [encoded (encode (bytes-&amp;gt;list input))])&lt;br /&gt;
    (if binary?&lt;br /&gt;
        (write-binary encoded)&lt;br /&gt;
        (write encoded)))) ; Använd write för att få korrekt läsbar listformat&lt;br /&gt;
&lt;br /&gt;
(define (run-decode binary?)&lt;br /&gt;
  (let* ([data (if binary? (read-binary) (read))]&lt;br /&gt;
         [decoded (decode data)])&lt;br /&gt;
    (display (list-&amp;gt;bytes decoded))))&lt;br /&gt;
&lt;br /&gt;
(define (run-test)&lt;br /&gt;
  (let* ([input (port-&amp;gt;bytes (current-input-port))]&lt;br /&gt;
         [encoded (encode (bytes-&amp;gt;list input))]&lt;br /&gt;
         [decoded (list-&amp;gt;bytes (decode encoded))])&lt;br /&gt;
    (if (equal? input decoded)&lt;br /&gt;
        (printf &amp;quot;Test lyckades! (~a bytes in, ~a noder skapade)\n&amp;quot; &lt;br /&gt;
                (bytes-length input) (length encoded))&lt;br /&gt;
        (error &amp;quot;Test misslyckades: Datat korrupt!&amp;quot;))))&lt;br /&gt;
&lt;br /&gt;
;; --- CLI ---&lt;br /&gt;
&lt;br /&gt;
(define (show-help)&lt;br /&gt;
  (displayln &amp;quot;Användning: racket rle.rkt [FLAGGA] &amp;lt; infil &amp;gt; utfil&amp;quot;)&lt;br /&gt;
  (displayln &amp;quot;  -e, --encode  Koda (standard: text-listor)&amp;quot;)&lt;br /&gt;
  (displayln &amp;quot;  -d, --decode  Dekoda (standard: text-listor)&amp;quot;)&lt;br /&gt;
  (displayln &amp;quot;  -b, --binary  Kör i binärläge (1 byte antal, 1 byte värde)&amp;quot;)&lt;br /&gt;
  (displayln &amp;quot;  -t, --test    Verifiera att koda+dekoda bevarar data&amp;quot;)&lt;br /&gt;
  (displayln &amp;quot;  -h, --help    Visa denna hjälp&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
(define (main)&lt;br /&gt;
  (let ([args (vector-&amp;gt;list (current-command-line-arguments))])&lt;br /&gt;
    (cond&lt;br /&gt;
      [(member &amp;quot;-t&amp;quot; args) (run-test)]&lt;br /&gt;
      [(and (member &amp;quot;-e&amp;quot; args) (or (member &amp;quot;-b&amp;quot; args) (member &amp;quot;--binary&amp;quot; args))) (run-encode #t)]&lt;br /&gt;
      [(member &amp;quot;-e&amp;quot; args) (run-encode #f)]&lt;br /&gt;
      [(and (member &amp;quot;-d&amp;quot; args) (or (member &amp;quot;-b&amp;quot; args) (member &amp;quot;--binary&amp;quot; args))) (run-decode #t)]&lt;br /&gt;
      [(member &amp;quot;-d&amp;quot; args) (run-decode #f)]&lt;br /&gt;
      [else (show-help)])))&lt;br /&gt;
&lt;br /&gt;
(main)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sat, 11 Apr 2026 14:38:41 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/RLE</comments>
		</item>
		<item>
			<title>Racket</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1847&amp;oldid=1842</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1847&amp;oldid=1842</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Kodexempel (Sommarhack 2026)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 11 april 2026 kl. 14.34&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l17&quot;&gt;Rad 17:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 17:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/base24]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/base24]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Personreg]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Personreg]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# [[Racket/RLE]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Lille-GUI]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Lille-GUI]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Multitråd]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Multitråd]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Sat, 11 Apr 2026 14:34:37 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket</comments>
		</item>
		<item>
			<title>Emacs</title>
			<link>http://wiki.sikvall.se/index.php?title=Emacs&amp;diff=1846&amp;oldid=1512</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Emacs&amp;diff=1846&amp;oldid=1512</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;.emacs&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 10 april 2026 kl. 08.41&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l20&quot;&gt;Rad 20:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 20:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(custom-set-faces)  ;; Enable wanted face&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(custom-set-faces)  ;; Enable wanted face&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Allow tex input for Unicode characters&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(set-input-method &quot;TeX&quot;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 10 Apr 2026 08:41:25 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Emacs</comments>
		</item>
		<item>
			<title>Racket/3D-boll</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/3D-boll&amp;diff=1845&amp;oldid=1843</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/3D-boll&amp;diff=1845&amp;oldid=1843</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 7 april 2026 kl. 18.18&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-multi&quot; lang=&quot;sv&quot;&gt;(En mellanliggande sidversion av samma användare visas inte)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Rad 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Version &quot;snurra själv&quot; = &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#lang racket&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#lang racket&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(require plot)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(require plot)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l70&quot;&gt;Rad 70:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 71:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(generate-dots particles)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(generate-dots particles)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(plot3d (points3d particles))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(plot3d (points3d particles))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Version &quot;snurrar själv&quot; =&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#lang racket&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(require plot)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(require racket/gui/base)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(require racket/pretty)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; En pixelboll i racket&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Från Buzzern skrivet under påskhelgen&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define π (acos -1))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define HEIGHT 600)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define WIDTH 800)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define VERTICAL-SPLIT 16)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define HORIZONTAL-SPLIT 16)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define RADIUS 100.0)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define PARTICLE-SIZE (* VERTICAL-SPLIT HORIZONTAL-SPLIT))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define particles (for/vector ([i (in-range PARTICLE-SIZE)])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                    (make-vector 3)))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; from scheme.com since normal scheme lacks for/vector&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define make-matrix&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (lambda (rows columns)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (do ((m (make-vector rows))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         (i 0 (+ i 1)))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      ((= i rows) m)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      (vector-set! m i (make-vector columns)))))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (to-&amp;gt;deg rad)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (* rad (/ 180 π)))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (to-&amp;gt;rad deg)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (/ (* deg π) 180 ))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (print-dots amount)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (let myloop ((count 0))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (if (&amp;gt;= count amount)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &#039;()&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        (begin&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          (println count)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          (myloop (+ count 1))))))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (generate-xyz radius θ ϕ)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (let* ([x (* radius (sin θ) (cos ϕ))]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         [y (* radius (sin θ) (sin ϕ))]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         [z (* radius (cos θ))]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         )&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (vector x y z)))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (projection x y z width height)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (let* ([camera-distance 300.0]  ; Push the object away from the camera&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         [scale-factor 250.0]     ; Keep the object visible after pushing it back         &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         ; Translate Z away from the viewer&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         [z-translated (+ z camera-distance)]         &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         ; Prevent divide-by-zero (just in case a point hits exactly 0)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         [z-safe (if (= z-translated 0.0) 0.001 z-translated)]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         ; Perspective projection with scaling&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         [xp (* x (/ scale-factor z-safe))]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         [yp (* y (/ scale-factor z-safe))])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    ;over to screen coords&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (vector (+ xp (/ width 2.0)) (+ (/ height 2.0) yp))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    ))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (get-angle index split)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (* 2 π index (/ split)))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (generate-dots particles)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (let* ([index-y -1])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (for ([row (in-vector particles)]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          [index (in-naturals)])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      (set! index-y (if (= 0 (modulo index HORIZONTAL-SPLIT))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                        (+ index-y 1)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                        index-y))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      (define new-θ (get-angle (modulo index HORIZONTAL-SPLIT) HORIZONTAL-SPLIT))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      (define new-ϕ (get-angle (modulo index-y VERTICAL-SPLIT) VERTICAL-SPLIT))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      (vector-set! particles index (generate-xyz RADIUS new-θ new-ϕ)))))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (rotateX x y z angle)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (let ([y-new (-(* y (cos angle)) (* z (sin angle)))]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        [z-new (+ (* y (sin angle)) (* z (cos angle)))])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (vector x y-new z-new)))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (rotateY x y z angle)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (let ([x-new (+(* x (cos angle)) (* z (sin angle)))]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        [z-new (+ (* (- x) (sin angle)) (* z (cos angle)))])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (vector x-new y z-new)))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define angleX 0.1)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define angleXspeed 0)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define angleY 0.1)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define angleYspeed 0)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define deltaTime (current-milliseconds))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define my-pen (new pen% [color &quot;blue&quot;] [width 2]))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (paint canvas dc)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (send dc clear)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (send dc set-pen&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          my-pen)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (for ([row (in-vector particles)])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (let* ([rotX (rotateX (vector-ref row 0) (vector-ref row 1) (vector-ref row 2) (to-&amp;gt;rad angleXspeed))]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;           [rotY (rotateY (vector-ref rotX 0) (vector-ref rotX 1) (vector-ref rotX 2) (to-&amp;gt;rad angleYspeed))]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;           [xy (projection (vector-ref rotY 0) (vector-ref rotY 1) (vector-ref rotY 2) WIDTH HEIGHT)])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      (send dc draw-point (vector-ref xy 0) (vector-ref xy 1)))))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define frame (new frame% [label &quot;Animation&quot;] [width WIDTH] [height HEIGHT]))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define canvas (new canvas% [parent frame] [paint-callback paint]))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(generate-dots particles)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define timer (new timer% [notify-callback&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                           (lambda ()&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                             ;(set! x (add1 x))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                             (set! deltaTime (- (current-milliseconds) deltaTime))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                             (set! angleXspeed (* angleX deltaTime))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                             (set! angleYspeed (* angleY deltaTime))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                             ;(printf &quot;~a\n&quot; (current-milliseconds))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                             (send canvas refresh)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                             ;(send timer start 16)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                             )]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                   [interval #f]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                   [just-once? #f]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                   ))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(send frame show #t)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(send timer start 16) ; ~60 FPS in best case i guess...&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 07 Apr 2026 18:18:11 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/3D-boll</comments>
		</item>
		<item>
			<title>Racket/3D-boll</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/3D-boll&amp;diff=1843&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/3D-boll&amp;diff=1843&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt;  #lang racket (require plot) (require racket/pretty) ;; En pixelboll iracket ;; Från Buzzern skrivet under påskhelgen  (define π (acos -1)) (define VERTICAL-SPLIT 16) (define HORIZONTAL-SPLIT 16) (define PARTICLE-SIZE (* VERTICAL-SPLIT HORIZONTAL-SPLIT)) (define particles (for/vector ([i (in-range PARTICLE-SIZE)])                     (make-vector 3)))  ;; from scheme.com since normal scheme lacks for/vector (define make-matrix   (lambda (rows columns)     (do ((...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#lang racket&lt;br /&gt;
(require plot)&lt;br /&gt;
(require racket/pretty)&lt;br /&gt;
;; En pixelboll iracket&lt;br /&gt;
;; Från Buzzern skrivet under påskhelgen&lt;br /&gt;
&lt;br /&gt;
(define π (acos -1))&lt;br /&gt;
(define VERTICAL-SPLIT 16)&lt;br /&gt;
(define HORIZONTAL-SPLIT 16)&lt;br /&gt;
(define PARTICLE-SIZE (* VERTICAL-SPLIT HORIZONTAL-SPLIT))&lt;br /&gt;
(define particles (for/vector ([i (in-range PARTICLE-SIZE)])&lt;br /&gt;
                    (make-vector 3)))&lt;br /&gt;
&lt;br /&gt;
;; from scheme.com since normal scheme lacks for/vector&lt;br /&gt;
(define make-matrix&lt;br /&gt;
  (lambda (rows columns)&lt;br /&gt;
    (do ((m (make-vector rows))&lt;br /&gt;
         (i 0 (+ i 1)))&lt;br /&gt;
        ((= i rows) m)&lt;br /&gt;
        (vector-set! m i (make-vector columns)))))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(define (to-&amp;gt;deg rad)&lt;br /&gt;
  (* rad (/ 180 π)))&lt;br /&gt;
&lt;br /&gt;
(define (print-dots amount)&lt;br /&gt;
  (let myloop ((count 0))&lt;br /&gt;
    (if (&amp;gt;= count amount)&lt;br /&gt;
        &amp;#039;()&lt;br /&gt;
        (begin&lt;br /&gt;
        (println count)&lt;br /&gt;
        (myloop (+ count 1))))))&lt;br /&gt;
&lt;br /&gt;
(define (generate-xyz radius θ ϕ)&lt;br /&gt;
  (let* ([x (* radius (sin θ) (cos ϕ))]&lt;br /&gt;
         [y (* radius (sin θ) (sin ϕ))]&lt;br /&gt;
         [z (* radius (cos θ))]&lt;br /&gt;
         )&lt;br /&gt;
  (vector x y z)))&lt;br /&gt;
&lt;br /&gt;
(define (test-loop amount)&lt;br /&gt;
  (let loop ((count 0))&lt;br /&gt;
    (if (&amp;gt;= count amount)&lt;br /&gt;
        &amp;#039;()&lt;br /&gt;
        (begin&lt;br /&gt;
        (println count)&lt;br /&gt;
        (loop (+ count 1))))))&lt;br /&gt;
&lt;br /&gt;
(define (get-angle index split)&lt;br /&gt;
  (* 2 π index (/ split)))&lt;br /&gt;
&lt;br /&gt;
(define (generate-dots particles)&lt;br /&gt;
  (let* ([index-y -1])&lt;br /&gt;
  (for ([row (in-vector particles)]&lt;br /&gt;
        [index (in-naturals)])&lt;br /&gt;
    (set! index-y (if (= 0 (modulo index HORIZONTAL-SPLIT))&lt;br /&gt;
        (+ index-y 1)&lt;br /&gt;
        index-y))&lt;br /&gt;
    ;(printf &amp;quot; ~a ~a\n&amp;quot; (modulo index HORIZONTAL-SPLIT) index-y)&lt;br /&gt;
    (define new-θ (get-angle (modulo index HORIZONTAL-SPLIT) HORIZONTAL-SPLIT))&lt;br /&gt;
    (define new-ϕ (get-angle (modulo index-y VERTICAL-SPLIT) VERTICAL-SPLIT))&lt;br /&gt;
    (printf &amp;quot; ~a ~a \n&amp;quot; (to-&amp;gt;deg new-θ) (to-&amp;gt;deg new-ϕ))&lt;br /&gt;
    ;;(vector-set! row 0 )&lt;br /&gt;
    (vector-set! particles index (generate-xyz 1.0 new-θ new-ϕ)))))&lt;br /&gt;
&lt;br /&gt;
;;(test-loop HORIZONTAL-SPLIT)&lt;br /&gt;
;;(generate-xyz 1 π (* 2.0 π))&lt;br /&gt;
(generate-dots particles)&lt;br /&gt;
(plot3d (points3d particles))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Tue, 07 Apr 2026 17:59:56 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/3D-boll</comments>
		</item>
		<item>
			<title>Racket</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1842&amp;oldid=1839</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1842&amp;oldid=1839</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Kodexempel (Sommarhack 2026)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 7 april 2026 kl. 17.57&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l24&quot;&gt;Rad 24:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 24:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Neural]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Neural]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Posits]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Posits]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# [[Racket/3D-boll]] -- från Olme&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 07 Apr 2026 17:57:49 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket</comments>
		</item>
		<item>
			<title>Racket/Markov</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/Markov&amp;diff=1841&amp;oldid=1840</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/Markov&amp;diff=1841&amp;oldid=1840</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 7 april 2026 kl. 17.24&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Rad 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Markovkedja av 1:a ordningen = &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#lang racket&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;;;;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Markovkedja av förstaordningen&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Tar en textfil eller stdin och bygger statistik över orden i tre gram&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; därefter producerar den en 150 ord lång text baserad på den statistiken&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Täpp-Anders Sikvall, anders@sikvall.se, 2026-04-07&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;;;;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(require racket/string&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         racket/port)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; ================================================&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; MARKOVKEDJA I RACKET – textinläsning → träning → textgenerering&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; ================================================&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Bygger en första-ordnings Markovkedja (ord → nästa-ord med vikter)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Texten splittas på whitespace. Punktuation behålls som del av orden&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; (vill du ha renare hantering kan du utöka med regexp senare).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (bygg-markov text)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (let ([ord-lista (string-split text)])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (define transitions (make-hash))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (for ([i (in-range 0 (sub1 (length ord-lista)))])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      (let* ([nuvarande (list-ref ord-lista i)]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;             [nästa     (list-ref ord-lista (add1 i))])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        ;; Skapa eller hämta inner-hash för nästa ord&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        (let ([nästa-hash (hash-ref! transitions nuvarande (λ () (make-hash)))])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          (hash-update! nästa-hash nästa add1 0))))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    transitions))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Väljer nästa ord med korrekt viktning (roulette wheel / weighted random)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (viktad-slump nästa-hash)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (let* ([par   (hash-&amp;gt;list nästa-hash)]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         [total (apply + (map cdr par))])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (if (zero? total)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        #f                                      ; ingen fortsättning finns&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        (let ([rand-val (random total)])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          (let loop ([lst par]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                     [acc 0])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;            (let* ([pair (car lst)]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                   [key  (car pair)]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                   [cnt  (cdr pair)])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;              (if (&amp;lt; rand-val (+ acc cnt))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                  key&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                  (loop (cdr lst) (+ acc cnt)))))))))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Genererar ny text med angivet antal ord&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (generera-text transitions start-ord antal-ord)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (let loop ([nuvarande start-ord]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;             [resultat  (list start-ord)]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;             [kvar      (sub1 antal-ord)])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (if (&amp;lt;= kvar 0)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        (string-join (reverse resultat) &quot; &quot;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        (let* ([nästa-hash (hash-ref transitions nuvarande (make-hash))]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;               [nästa      (viktad-slump nästa-hash)])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          (if (not nästa)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;              (string-join (reverse resultat) &quot; &quot;)   ; kedjan tog slut&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;              (loop nästa&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                    (cons nästa resultat)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                    (sub1 kvar)))))))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; ================================================&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; HUVUDPROGRAM – läser från stdin och skriver ut genererad text&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; ================================================&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (main)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (let* ([input-text (port-&amp;gt;string (current-input-port))]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         [model      (bygg-markov input-text)])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (cond&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      [(hash-empty? model)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;       (displayln &quot;Fel: Ingen text inläst! Mata in text via stdin eller fil.&quot;)]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      [else&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;       ;; Välj ett slumpmässigt startord bland alla ord som förekommer&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;       (let* ([alla-start-ord (hash-keys model)]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;              [start-ord      (list-ref alla-start-ord (random (length alla-start-ord)))])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         (displayln &quot;=== Genererad text (100 ord) ===&quot;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         (displayln (generera-text model start-ord 150)))])))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Kör programmet direkt när filen exekveras med racket&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(main)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Markovkedja av 3:e ordningen =&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#lang racket&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#lang racket&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l87&quot;&gt;Rad 87:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 176:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;               [start-prefix (list-ref all-prefixes (random (length all-prefixes)))])&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;               [start-prefix (list-ref all-prefixes (random (length all-prefixes)))])&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          (displayln &amp;quot;=== Genererad text med 3:e ordningens Markovkedja (200 ord) ===&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          (displayln &amp;quot;=== Genererad text med 3:e ordningens Markovkedja (200 ord) ===&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          (displayln (generate-text-3 model start-prefix &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;200&lt;/del&gt;)))])))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          (displayln (generate-text-3 model start-prefix &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;150&lt;/ins&gt;)))])))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(main)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(main)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 07 Apr 2026 17:24:36 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Markov</comments>
		</item>
		<item>
			<title>Racket/Markov</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/Markov&amp;diff=1840&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/Markov&amp;diff=1840&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; Markovkedja av tredje ordningen ;; ;; Tar en textfil eller stdin och bygger statistik över orden i tre gram ;; därefter producerar den en 150 ord lång text baserad på den statistiken ;; ;; Täpp-Anders Sikvall, anders@sikvall.se, 2026-04-07 ;;;;;  (require racket/string          racket/port)  ;; ================================================ ;; MARKOVKEDJA – TREDJE ORDNINGEN (3-gram)  ;; ===============================================...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#lang racket&lt;br /&gt;
&lt;br /&gt;
;;;;;&lt;br /&gt;
;; Markovkedja av tredje ordningen&lt;br /&gt;
;;&lt;br /&gt;
;; Tar en textfil eller stdin och bygger statistik över orden i tre gram&lt;br /&gt;
;; därefter producerar den en 150 ord lång text baserad på den statistiken&lt;br /&gt;
;;&lt;br /&gt;
;; Täpp-Anders Sikvall, anders@sikvall.se, 2026-04-07&lt;br /&gt;
;;;;;&lt;br /&gt;
&lt;br /&gt;
(require racket/string&lt;br /&gt;
         racket/port)&lt;br /&gt;
&lt;br /&gt;
;; ================================================&lt;br /&gt;
;; MARKOVKEDJA – TREDJE ORDNINGEN (3-gram) &lt;br /&gt;
;; ================================================&lt;br /&gt;
&lt;br /&gt;
;; Skapar alla n-gram&lt;br /&gt;
(define (make-ngrams words n)&lt;br /&gt;
  (for/list ([i (in-range 0 (- (length words) (sub1 n)))])&lt;br /&gt;
    (take (drop words i) n)))&lt;br /&gt;
&lt;br /&gt;
;; Bygger 3:e ordningens Markovmodell – korrekt indexering&lt;br /&gt;
(define (build-markov-3 text)&lt;br /&gt;
  (define words (filter non-empty-string? (string-split text)))&lt;br /&gt;
  (when (&amp;lt; (length words) 4)&lt;br /&gt;
    (error &amp;#039;build-markov-3 &amp;quot;Texten är för kort för 3-gram (minst 4 ord behövs).&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
  (define transitions (make-hash))&lt;br /&gt;
&lt;br /&gt;
  (for ([i (in-range 0 (- (length words) 3))])&lt;br /&gt;
    (let* ([prefix (list (list-ref words i)&lt;br /&gt;
                         (list-ref words (+ i 1))&lt;br /&gt;
                         (list-ref words (+ i 2)))]&lt;br /&gt;
           [next-word (list-ref words (+ i 3))]&lt;br /&gt;
           [freq-hash (hash-ref! transitions prefix (λ () (make-hash)))])&lt;br /&gt;
      (hash-update! freq-hash next-word add1 0)))&lt;br /&gt;
&lt;br /&gt;
  transitions)&lt;br /&gt;
&lt;br /&gt;
;; Viktad slumpmässig val&lt;br /&gt;
(define (weighted-random freq-hash)&lt;br /&gt;
  (define options (hash-&amp;gt;list freq-hash))&lt;br /&gt;
  (define total (apply + (map cdr options)))&lt;br /&gt;
  (if (zero? total)&lt;br /&gt;
      #f&lt;br /&gt;
      (let ([r (random total)])&lt;br /&gt;
        (let loop ([lst options] [acc 0])&lt;br /&gt;
          (match lst&lt;br /&gt;
            [&amp;#039;() #f]&lt;br /&gt;
            [(cons (cons word count) rest)&lt;br /&gt;
             (if (&amp;lt; r (+ acc count))&lt;br /&gt;
                 word&lt;br /&gt;
                 (loop rest (+ acc count)))])))))&lt;br /&gt;
&lt;br /&gt;
;; Genererar text&lt;br /&gt;
(define (generate-text-3 transitions start-prefix num-words)&lt;br /&gt;
  (let loop ([current-prefix start-prefix]&lt;br /&gt;
             [result        (vector-&amp;gt;list (list-&amp;gt;vector start-prefix))]  ; enklare append&lt;br /&gt;
             [remaining     (- num-words 3)])&lt;br /&gt;
    (if (&amp;lt;= remaining 0)&lt;br /&gt;
        (string-join result &amp;quot; &amp;quot;)&lt;br /&gt;
        (let* ([freq-hash (hash-ref transitions current-prefix (make-hash))]&lt;br /&gt;
               [next-word (weighted-random freq-hash)])&lt;br /&gt;
          (if (not next-word)&lt;br /&gt;
              (string-join result &amp;quot; &amp;quot;)&lt;br /&gt;
              (let ([new-prefix (append (cdr current-prefix) (list next-word))])&lt;br /&gt;
                (loop new-prefix&lt;br /&gt;
                      (append result (list next-word))&lt;br /&gt;
                      (sub1 remaining))))))))&lt;br /&gt;
&lt;br /&gt;
;; ================================================&lt;br /&gt;
;; HUVUDPROGRAM&lt;br /&gt;
;; ================================================&lt;br /&gt;
&lt;br /&gt;
(define (main)&lt;br /&gt;
  (let* ([input-text (port-&amp;gt;string (current-input-port))]&lt;br /&gt;
         [words      (filter non-empty-string? (string-split input-text))])&lt;br /&gt;
    (cond&lt;br /&gt;
      [(&amp;lt; (length words) 4)&lt;br /&gt;
       (displayln &amp;quot;Fel: Texten är för kort för 3:e ordningens Markovkedja (minst 4 ord behövs).&amp;quot;)]&lt;br /&gt;
      [else&lt;br /&gt;
       (let* ([model        (build-markov-3 input-text)]&lt;br /&gt;
              [all-prefixes (hash-keys model)]&lt;br /&gt;
              [start-prefix (list-ref all-prefixes (random (length all-prefixes)))])&lt;br /&gt;
         (displayln &amp;quot;=== Genererad text med 3:e ordningens Markovkedja (200 ord) ===&amp;quot;)&lt;br /&gt;
         (displayln (generate-text-3 model start-prefix 200)))])))&lt;br /&gt;
&lt;br /&gt;
(main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Tue, 07 Apr 2026 14:16:08 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Markov</comments>
		</item>
		<item>
			<title>Racket</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1839&amp;oldid=1836</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1839&amp;oldid=1836</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Kodexempel (Sommarhack 2026)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 7 april 2026 kl. 14.07&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l21&quot;&gt;Rad 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/6502-emu]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/6502-emu]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Genetic]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Genetic]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# [[Racket/Markov]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Neural]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Neural]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Posits]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Posits]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 07 Apr 2026 14:07:26 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket</comments>
		</item>
		<item>
			<title>Racket/base24</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/base24&amp;diff=1838&amp;oldid=1837</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/base24&amp;diff=1838&amp;oldid=1837</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 7 april 2026 kl. 13.05&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Rad 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;;;;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;;;;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;; BASE24 encoder/decoder&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;; BASE24 encoder/decoder&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;; Täpp-Anders Sikvall, anders@sikvall.se, 2026-04-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;97&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;; Täpp-Anders Sikvall, anders@sikvall.se, 2026-04-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;07&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;; USAGE&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;; USAGE&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 07 Apr 2026 13:05:04 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/base24</comments>
		</item>
		<item>
			<title>Racket/base24</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/base24&amp;diff=1837&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/base24&amp;diff=1837&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; BASE24 encoder/decoder ;; Täpp-Anders Sikvall, anders@sikvall.se, 2026-04-97 ;; ;; USAGE ;;          racket base24.rkt --encode &amp;lt; INPUT_FILE &amp;gt; OUTPUT_FILE ;;          racket base24.rkt --decode &amp;lt; INPUT_FILE &amp;gt; OUTPUT_FILE ;; ;; COMMENT ;;          This does not precede the coded data with any kind of header ;;          and the error control and handling is abysmally minimal but ;;          it shows the ease of implementing something like this...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#lang racket&lt;br /&gt;
&lt;br /&gt;
;;;;;&lt;br /&gt;
;; BASE24 encoder/decoder&lt;br /&gt;
;; Täpp-Anders Sikvall, anders@sikvall.se, 2026-04-97&lt;br /&gt;
;;&lt;br /&gt;
;; USAGE&lt;br /&gt;
;;          racket base24.rkt --encode &amp;lt; INPUT_FILE &amp;gt; OUTPUT_FILE&lt;br /&gt;
;;          racket base24.rkt --decode &amp;lt; INPUT_FILE &amp;gt; OUTPUT_FILE&lt;br /&gt;
;;&lt;br /&gt;
;; COMMENT&lt;br /&gt;
;;          This does not precede the coded data with any kind of header&lt;br /&gt;
;;          and the error control and handling is abysmally minimal but&lt;br /&gt;
;;          it shows the ease of implementing something like this compared&lt;br /&gt;
;;          to languages like C.&lt;br /&gt;
;;&lt;br /&gt;
;; EXPLANATION&lt;br /&gt;
;;          The program treats the entire input as a bignum and then basically&lt;br /&gt;
;;          converts it to the output by repeated division and looking up the&lt;br /&gt;
;;          quotient in the BASE24 alphabet. Since the bignum implementation&lt;br /&gt;
;;          is so efficient in Racket/Scheme this means it will be effective&lt;br /&gt;
;;          even for moderately large files.&lt;br /&gt;
;;&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
;; BASE24 Alfabet (exkluderar förväxlingsbara tecken)&lt;br /&gt;
(define alphabet &amp;quot;BCDFGHJKMPQRTVWXY2346789&amp;quot;)&lt;br /&gt;
(define base 24)&lt;br /&gt;
(define max-col 68)&lt;br /&gt;
&lt;br /&gt;
;; Skapar en map för snabb uppslagning vid avkodning&lt;br /&gt;
(define char-to-val&lt;br /&gt;
  (for/hash ([c (in-string alphabet)]&lt;br /&gt;
             [i (in-naturals)])&lt;br /&gt;
    (values c i)))&lt;br /&gt;
&lt;br /&gt;
;; Hjälpfunktion för att skriva ut med radbrytningar&lt;br /&gt;
(define (display-with-breaks str)&lt;br /&gt;
  (let loop ([remaining str])&lt;br /&gt;
    (cond&lt;br /&gt;
      [(&amp;lt;= (string-length remaining) max-col)&lt;br /&gt;
       (displayln remaining)]&lt;br /&gt;
      [else&lt;br /&gt;
       (displayln (substring remaining 0 max-col))&lt;br /&gt;
       (loop (substring remaining max-col))])))&lt;br /&gt;
&lt;br /&gt;
;; --- ENCODER ---&lt;br /&gt;
(define (encode)&lt;br /&gt;
  (let* ([input-bytes (port-&amp;gt;bytes (current-input-port))]&lt;br /&gt;
         [num (bytes-&amp;gt;integer input-bytes)])&lt;br /&gt;
    (if (zero? num)&lt;br /&gt;
        (displayln (string-ref alphabet 0))&lt;br /&gt;
        (let loop ([n num] [res &amp;#039;()])&lt;br /&gt;
          (if (zero? n)&lt;br /&gt;
              (display-with-breaks (list-&amp;gt;string res))&lt;br /&gt;
              (loop (quotient n base)&lt;br /&gt;
                    (cons (string-ref alphabet (remainder n base)) res)))))))&lt;br /&gt;
&lt;br /&gt;
;; --- DECODER ---&lt;br /&gt;
(define (decode)&lt;br /&gt;
  ;; Vi rensar bort eventuella radbrytningar/whitespaces innan vi avkodar&lt;br /&gt;
  (let* ([raw-input (port-&amp;gt;string (current-input-port))]&lt;br /&gt;
         [input-str (regexp-replace* #px&amp;quot;\\s+&amp;quot; raw-input &amp;quot;&amp;quot;)]&lt;br /&gt;
         [num (for/fold ([n 0])&lt;br /&gt;
                        ([char (in-string input-str)])&lt;br /&gt;
                (+ (* n base) (hash-ref char-to-val char)))])&lt;br /&gt;
    (display (integer-&amp;gt;bytes num))))&lt;br /&gt;
&lt;br /&gt;
;; --- KONVERTERINGSFUNKTIONER ---&lt;br /&gt;
(define (bytes-&amp;gt;integer b)&lt;br /&gt;
  (for/fold ([n 0])&lt;br /&gt;
            ([byte (in-bytes b)])&lt;br /&gt;
    (+ (arithmetic-shift n 8) byte)))&lt;br /&gt;
&lt;br /&gt;
(define (integer-&amp;gt;bytes n)&lt;br /&gt;
  (if (zero? n)&lt;br /&gt;
      (bytes 0)&lt;br /&gt;
      (let loop ([i n] [res &amp;#039;()])&lt;br /&gt;
        (if (zero? i)&lt;br /&gt;
            (list-&amp;gt;bytes res)&lt;br /&gt;
            (loop (arithmetic-shift i -8)&lt;br /&gt;
                  (cons (bitwise-and i #xFF) res))))))&lt;br /&gt;
&lt;br /&gt;
;; --- CLI HANTERING ---&lt;br /&gt;
(define (main)&lt;br /&gt;
  (match (current-command-line-arguments)&lt;br /&gt;
    [(vector (or &amp;quot;--encode&amp;quot; &amp;quot;-e&amp;quot;)) (encode)]&lt;br /&gt;
    [(vector (or &amp;quot;--decode&amp;quot; &amp;quot;-d&amp;quot;)) (decode)]&lt;br /&gt;
    [_ (displayln &amp;quot;Användning: racket base24.rkt [--encode | --decode]&amp;quot;)]))&lt;br /&gt;
&lt;br /&gt;
(main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Tue, 07 Apr 2026 13:04:43 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/base24</comments>
		</item>
		<item>
			<title>Racket</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1836&amp;oldid=1822</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1836&amp;oldid=1822</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Kodexempel (Sommarhack 2026)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 7 april 2026 kl. 13.04&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l15&quot;&gt;Rad 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 15:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Erastothenes]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Erastothenes]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Hexdump]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Hexdump]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# [[Racket/base24]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Personreg]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Personreg]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Lille-GUI]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# [[Racket/Lille-GUI]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 07 Apr 2026 13:04:29 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket</comments>
		</item>
		<item>
			<title>Huvudsida</title>
			<link>http://wiki.sikvall.se/index.php?title=Huvudsida&amp;diff=1835&amp;oldid=1762</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Huvudsida&amp;diff=1835&amp;oldid=1762</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Särskilt utvalda sidor&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 6 april 2026 kl. 16.51&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l24&quot;&gt;Rad 24:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 24:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Fisher-Yates Shuffle]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Fisher-Yates Shuffle]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Base64]] [[Base32]] [[Base24]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Base64]] [[Base32]] [[Base24]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [[Racket]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Elektronik ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Elektronik ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Mon, 06 Apr 2026 16:51:18 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Huvudsida</comments>
		</item>
		<item>
			<title>Racket/Erastothenes</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/Erastothenes&amp;diff=1834&amp;oldid=1827</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/Erastothenes&amp;diff=1834&amp;oldid=1827</guid>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 5 april 2026 kl. 14.17&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot;&gt;Rad 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;;;;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;;;;;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Skapar en vektor där indexet motsvarar talet.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Om (vector-ref v n) är #t, så är n ett primtal.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(define (make-sieve limit)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (define sieve (make-vector (add1 limit) #t))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  ;; 0 och 1 är aldrig primtal&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (when (&amp;gt;= limit 0) (vector-set! sieve 0 #f))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (when (&amp;gt;= limit 1) (vector-set! sieve 1 #f))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  ;; Vi behöver bara gå upp till kvadratroten av limit&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  (for ([p (in-range 2 (add1 (integer-sqrt limit)))])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    (when (vector-ref sieve p)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      ;; Markera alla multiplar av p som falska (starta vid p*p)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      (for ([multiple (in-range (* p p) (add1 limit) p)])&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        (vector-set! sieve multiple #f))))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  sieve)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Returnerar en lista med alla primtal mellan start och stop&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(define (primes-between start stop)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(define (primes-between start stop)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   (&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cond&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if &lt;/ins&gt;(&amp;gt; start stop)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    [&lt;/del&gt;(&amp;gt; start stop) &#039;()&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      &lt;/ins&gt;&#039;() ;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Returnerar tomt om start &amp;gt; &lt;/ins&gt;stop&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    [else&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      &lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;let &lt;/ins&gt;([&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is&lt;/ins&gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;prime? &lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;make&lt;/ins&gt;-sieve stop)])&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     &lt;/del&gt;; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Skapa en bool-vektor för intervallet [0..stop]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;(for/list ([&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;n &lt;/ins&gt;(in-range (max start 2) (add1 stop))]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     (define sieve (make-vector (+ stop 1) #t))&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                   &lt;/ins&gt;#:when (vector-ref &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is-prime? n&lt;/ins&gt;))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          n))&lt;/ins&gt;))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     ; 0 och 1 är inte primtal&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     (vector-set! sieve 0 #f)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     (vector-set! sieve 1 #f)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;; Testkörning&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(primes-between 10 50&lt;/ins&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     ; Såll: markera multiplar&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     ; Går från 2 till (roten ur &lt;/del&gt;stop&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;) +1&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     ; inre vektorn går från i^2 till stop med steglängden i&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     ; och markerar multiplarna av i genom hela vektorfältet&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     &lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for &lt;/del&gt;([&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;i (in-range 2 (add1 (integer&lt;/del&gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sqrt stop)))])&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;       &lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;when (vector&lt;/del&gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ref &lt;/del&gt;sieve &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;i)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;         (for ([j (in-range (* i i) (add1 &lt;/del&gt;stop&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;) i&lt;/del&gt;)])&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;           (vector-set! sieve j #f))))&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     ; Samla ihop primtal i intervallet [start, stop]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     &lt;/del&gt;(for/list ([&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;i &lt;/del&gt;(in-range (max start 2) (add1 stop))]&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;                &lt;/del&gt;#:when (vector-ref &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sieve i&lt;/del&gt;))&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;       i&lt;/del&gt;)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;))&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; Exempel på användning:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(primes-between 100000 200000)   ; funkar snabbt även för stora tal&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 05 Apr 2026 14:17:31 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Erastothenes</comments>
		</item>
		<item>
			<title>Racket/Posits</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/Posits&amp;diff=1833&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/Posits&amp;diff=1833&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; En enkel implementation av Posists eller Unum typ III ;; i Racket för skojs skull och för att lära sig mer ;; ;; Täpp-Anders Sikvall anders@sikvall.se 2026-04-04 ;; ;; Posit representeras som ett heltal (bitmönster, 0 till 2^n-1). ;; Parametrar: n = totalt antal bits, es = antal exponent-bits (t.ex. n=16, es=1 för posit16). ;; Innehåller: ;;  * Konvertering till/från generiska tal (number-&amp;gt;posit och posit-&amp;gt;number) ;;  * Addition, subt...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#lang racket&lt;br /&gt;
&lt;br /&gt;
;;;;;&lt;br /&gt;
;; En enkel implementation av Posists eller Unum typ III&lt;br /&gt;
;; i Racket för skojs skull och för att lära sig mer&lt;br /&gt;
;;&lt;br /&gt;
;; Täpp-Anders Sikvall anders@sikvall.se 2026-04-04&lt;br /&gt;
;;&lt;br /&gt;
;; Posit representeras som ett heltal (bitmönster, 0 till 2^n-1).&lt;br /&gt;
;; Parametrar: n = totalt antal bits, es = antal exponent-bits (t.ex. n=16, es=1 för posit16).&lt;br /&gt;
;; Innehåller:&lt;br /&gt;
;;  * Konvertering till/från generiska tal (number-&amp;gt;posit och posit-&amp;gt;number)&lt;br /&gt;
;;  * Addition, subtraktion, multiplikation och division av posits&lt;br /&gt;
;;&lt;br /&gt;
;; Aritmetiken är implementerad via konvertering till reellt tal + operation + tillbaka till posit&lt;br /&gt;
;; (enkel approach som bevarar tapered precision via rounding vid varje steg).&lt;br /&gt;
;; Full bit-exakt aritmetik (alignera regime/exponent etc.) är mer komplex och lämnas som utökning.&lt;br /&gt;
;; Algoritmen för number-&amp;gt;posit är översatt direkt från Gustafsons x2p i &amp;quot;Posits4.pdf&amp;quot;.&lt;br /&gt;
;; posit-&amp;gt;number använder full fält-extraktion (regime, exponent, fraction).&lt;br /&gt;
&lt;br /&gt;
(define (number-&amp;gt;posit x n es)&lt;br /&gt;
  ;; x2p-algoritmen från Gustafson (översatt till Racket)&lt;br /&gt;
  ;; Returnerar posit-bitmönster som heltal.&lt;br /&gt;
  (cond&lt;br /&gt;
    [(= x 0) 0]&lt;br /&gt;
    [(infinite? x) (arithmetic-shift 1 (- n 1))]&lt;br /&gt;
    [else&lt;br /&gt;
     (let* ([nbits n]&lt;br /&gt;
            [npat (expt 2 nbits)]&lt;br /&gt;
            [useed (expt 2 (expt 2 es))]&lt;br /&gt;
            [y (abs x)]&lt;br /&gt;
            [p 0]&lt;br /&gt;
            [i 0]&lt;br /&gt;
            [e-val (- (expt 2 es) 1)])&lt;br /&gt;
       ;; Northeast/southeast quadrant (regime-byggnad)&lt;br /&gt;
       (if (&amp;gt;= y 1)&lt;br /&gt;
           (begin&lt;br /&gt;
             (set! p 1)&lt;br /&gt;
             (set! i 2)&lt;br /&gt;
             (let loop-regime ()&lt;br /&gt;
               (when (and (&amp;gt;= y useed) (&amp;lt; i nbits))&lt;br /&gt;
                 (set! p (+ (* 2 p) 1))&lt;br /&gt;
                 (set! y (/ y useed))&lt;br /&gt;
                 (set! i (add1 i))&lt;br /&gt;
                 (loop-regime)))&lt;br /&gt;
             (set! p (* 2 p))&lt;br /&gt;
             (set! i (add1 i)))&lt;br /&gt;
           (begin&lt;br /&gt;
             (set! p 0)&lt;br /&gt;
             (set! i 1)&lt;br /&gt;
             (let loop-regime ()&lt;br /&gt;
               (when (and (&amp;lt; y 1) (&amp;lt;= i nbits))&lt;br /&gt;
                 (set! y (* y useed))&lt;br /&gt;
                 (set! i (add1 i))&lt;br /&gt;
                 (loop-regime)))&lt;br /&gt;
             (if (&amp;gt;= i nbits)&lt;br /&gt;
                 (begin&lt;br /&gt;
                   (set! p 2)&lt;br /&gt;
                   (set! i (add1 nbits)))&lt;br /&gt;
                 (begin&lt;br /&gt;
                   (set! p 1)&lt;br /&gt;
                   (set! i (add1 i))))))&lt;br /&gt;
       ;; Exponent-extraktion&lt;br /&gt;
       (let loop-exp ()&lt;br /&gt;
         (when (and (&amp;gt; e-val 0.5) (&amp;lt;= i nbits))&lt;br /&gt;
           (set! p (* 2 p))&lt;br /&gt;
           (when (&amp;gt;= y (expt 2 e-val))&lt;br /&gt;
             (set! y (/ y (expt 2 e-val)))&lt;br /&gt;
             (set! p (add1 p)))&lt;br /&gt;
           (set! e-val (/ e-val 2))&lt;br /&gt;
           (set! i (add1 i))&lt;br /&gt;
           (loop-exp)))&lt;br /&gt;
       (set! y (- y 1))&lt;br /&gt;
       ;; Fraction-bits&lt;br /&gt;
       (let loop-frac ()&lt;br /&gt;
         (when (and (&amp;gt; y 0) (&amp;lt;= i nbits))&lt;br /&gt;
           (set! y (* 2 y))&lt;br /&gt;
           (set! p (+ (* 2 p) (floor y)))&lt;br /&gt;
           (set! y (- y (floor y)))&lt;br /&gt;
           (set! i (add1 i))&lt;br /&gt;
           (loop-frac)))&lt;br /&gt;
       ;; Skift och rounding (nearest, tie to even)&lt;br /&gt;
       (set! p (* p (expt 2 (- (+ nbits 1) i))))&lt;br /&gt;
       (set! i (add1 i))&lt;br /&gt;
       (let* ([round-bit (bitwise-and p 1)])&lt;br /&gt;
         (set! p (floor (/ p 2)))&lt;br /&gt;
         (set! p (cond&lt;br /&gt;
                   [(= round-bit 0) p]&lt;br /&gt;
                   [(= y 0) (+ p (bitwise-and p 1))]  ;; tie to even&lt;br /&gt;
                   [else (add1 p)])))&lt;br /&gt;
       ;; Negativt tal: 2&amp;#039;s complement (npat - p)&lt;br /&gt;
       (set! p (modulo (if (&amp;lt; x 0) (- npat p) p) npat))&lt;br /&gt;
       p)]))&lt;br /&gt;
&lt;br /&gt;
(define (posit-&amp;gt;number p n es)&lt;br /&gt;
  ;; Full decode enligt Gustafson/Unum Type III&lt;br /&gt;
  ;; Returnerar exakt reellt tal (flonum för enkelhet, men kan utökas till rational).&lt;br /&gt;
  (cond&lt;br /&gt;
    [(= p 0) 0]&lt;br /&gt;
    [(= p (arithmetic-shift 1 (- n 1))) +inf.0]  ;; NaR / ∞&lt;br /&gt;
    [else&lt;br /&gt;
     (let* ([sign (if (zero? (bitwise-and p (arithmetic-shift 1 (- n 1)))) 1 -1)]&lt;br /&gt;
            [abs-p (if (= sign 1)&lt;br /&gt;
                       p&lt;br /&gt;
                       (bitwise-and (+ (bitwise-not p) 1) (- (expt 2 n) 1)))]&lt;br /&gt;
            [useed (expt 2 (expt 2 es))])&lt;br /&gt;
       ;; Extrahera regime (runlength m av identiska bits)&lt;br /&gt;
       (let*-values ([(r m) (let ([first-r (bitwise-and (arithmetic-shift abs-p (- (- n 2))) 1)])&lt;br /&gt;
                              (let loop ([pos (- n 2)]&lt;br /&gt;
                                         [m 0])&lt;br /&gt;
                                (if (or (&amp;lt; pos -1) (&amp;gt; m n))&lt;br /&gt;
                                    (values first-r m)&lt;br /&gt;
                                    (let ([bit (bitwise-and (arithmetic-shift abs-p (- pos)) 1)])&lt;br /&gt;
                                      (if (= bit first-r)&lt;br /&gt;
                                          (loop (sub1 pos) (add1 m))&lt;br /&gt;
                                          (values first-r m))))))])&lt;br /&gt;
         (let* ([k (if (= r 0) (- m) (- m 1))]&lt;br /&gt;
                ;; Regime-field tar m + 1 bits (run + terminator)&lt;br /&gt;
                [regime-bits-used (+ m 1)]&lt;br /&gt;
                [exp-start-pos (- (- n 2) regime-bits-used)]  ;; första exp-bit (MSB)&lt;br /&gt;
                ;; Ta upp till es exp-bits (pad low bits med 0 om färre)&lt;br /&gt;
                [exp-bits (if (&amp;lt; exp-start-pos 0)&lt;br /&gt;
                              0&lt;br /&gt;
                              (let loop ([pos exp-start-pos]&lt;br /&gt;
                                         [bits-left es]&lt;br /&gt;
                                         [e-acc 0])&lt;br /&gt;
                                (if (or (&amp;lt;= bits-left 0) (&amp;lt; pos -1))&lt;br /&gt;
                                    e-acc&lt;br /&gt;
                                    (let ([bit (bitwise-and (arithmetic-shift abs-p (- pos)) 1)])&lt;br /&gt;
                                      (loop (sub1 pos)&lt;br /&gt;
                                            (sub1 bits-left)&lt;br /&gt;
                                            (+ (* e-acc 2) bit))))))]&lt;br /&gt;
                [exp-used (min es (max 0 (+ (- n 1) exp-start-pos)))]  ;; tillgängliga bits&lt;br /&gt;
                [f-start-pos (- exp-start-pos exp-used)]&lt;br /&gt;
                ;; Fraction (remaining bits, hidden 1.)&lt;br /&gt;
                [f (if (&amp;lt; f-start-pos 0)&lt;br /&gt;
                       0&lt;br /&gt;
                       (let loop ([pos f-start-pos]&lt;br /&gt;
                                  [f-acc 0]&lt;br /&gt;
                                  [fsize 0])&lt;br /&gt;
                         (if (&amp;lt; pos -1)&lt;br /&gt;
                             f-acc&lt;br /&gt;
                             (let ([bit (bitwise-and (arithmetic-shift abs-p (- pos)) 1)])&lt;br /&gt;
                               (loop (sub1 pos)&lt;br /&gt;
                                     (+ (* f-acc 2) bit)&lt;br /&gt;
                                     (add1 fsize))))))]&lt;br /&gt;
                [fsize (max 0 (- n 1 regime-bits-used exp-used))]  ;; antal fraction-bits&lt;br /&gt;
                [significand (+ 1 (/ f (expt 2 fsize)))])&lt;br /&gt;
           (* sign (expt useed k) (expt 2 exp-bits) significand))))]))&lt;br /&gt;
&lt;br /&gt;
;; Aritmetik (enkel via realtal + rounding till posit)&lt;br /&gt;
(define (posit+ p1 p2 n es)&lt;br /&gt;
  (number-&amp;gt;posit (+ (posit-&amp;gt;number p1 n es) (posit-&amp;gt;number p2 n es)) n es))&lt;br /&gt;
&lt;br /&gt;
(define (posit- p1 p2 n es)&lt;br /&gt;
  (number-&amp;gt;posit (- (posit-&amp;gt;number p1 n es) (posit-&amp;gt;number p2 n es)) n es))&lt;br /&gt;
&lt;br /&gt;
(define (posit* p1 p2 n es)&lt;br /&gt;
  (number-&amp;gt;posit (* (posit-&amp;gt;number p1 n es) (posit-&amp;gt;number p2 n es)) n es))&lt;br /&gt;
&lt;br /&gt;
(define (posit/ p1 p2 n es)&lt;br /&gt;
  (number-&amp;gt;posit (/ (posit-&amp;gt;number p1 n es) (posit-&amp;gt;number p2 n es)) n es))&lt;br /&gt;
&lt;br /&gt;
;; Exempel på användning (kommentera bort eller kör i REPL):&lt;br /&gt;
;; (define n 16)&lt;br /&gt;
;; (define es 1)&lt;br /&gt;
;; (define a (number-&amp;gt;posit 3.14 n es))   ;; -&amp;gt; posit för 3.14&lt;br /&gt;
;; (define b (number-&amp;gt;posit 2.0 n es))&lt;br /&gt;
;; (posit+ a b n es)                      ;; addition&lt;br /&gt;
;; (posit-&amp;gt;number a n es)                 ;; tillbaka till tal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sun, 05 Apr 2026 13:01:42 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Posits</comments>
		</item>
		<item>
			<title>Racket/Posits</title>
			<link>http://wiki.sikvall.se/index.php/Racket/Posits</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php/Racket/Posits</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php/Anv%C3%A4ndare:Anders&quot; class=&quot;mw-userlink&quot; title=&quot;Användare:Anders&quot;&gt;&lt;bdi&gt;Anders&lt;/bdi&gt;&lt;/a&gt; raderade sidan &lt;a href=&quot;/index.php/Racket/Posits&quot; title=&quot;Racket/Posits&quot;&gt;Racket/Posits&lt;/a&gt; innehållet var: &amp;quot;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; En enkel implementation av Posists eller Unum typ III ;; i Racket för skojs skull och för att lära sig mer ;; ;; Täpp-Anders Sikvall anders@sikvall.se 2026-04-04 ;; ;; Posit representeras som ett heltal (bitmönster, 0 till 2^n-1). ;; Parametrar: n = totalt antal bits, es = antal exponent-bits (t.ex. n=16, es=1 för posit16). ;; Innehåller:...&amp;quot;, den enda som skrivit var &amp;quot;&lt;a href=&quot;/index.php/Special:Bidrag/Anders&quot; title=&quot;Special:Bidrag/Anders&quot;&gt;Anders&lt;/a&gt;&amp;quot; (&lt;a href=&quot;/index.php?title=Anv%C3%A4ndardiskussion:Anders&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Användardiskussion:Anders (sidan existerar inte)&quot;&gt;diskussion&lt;/a&gt;)&lt;/p&gt;
</description>
			<pubDate>Sun, 05 Apr 2026 13:01:35 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Posits</comments>
		</item>
		<item>
			<title>Racket/Neural</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/Neural&amp;diff=1832&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/Neural&amp;diff=1832&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; Neuralt nät implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;    ;;;;; NEURALT NÄT ;;; ;; Detta program implementerar ett litet neuralt nät och tränar det på sannings- ;; tabellen för XOR. Efter några tusen epoker ska prediktionerna ligga extremt nära ;; följande: ;; ;; a,b → a XOR b ;; 0,0 →    0 ;; 0,1 →    1 ;; 1,0 →    1 ;; 1,1 →    0 ;; ;; Implementationen har två input-neuroner för a...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#lang racket&lt;br /&gt;
&lt;br /&gt;
;;;;;&lt;br /&gt;
;; Neuralt nät implementerad i Racket&lt;br /&gt;
;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se&lt;br /&gt;
;;;;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;;;;; NEURALT NÄT&lt;br /&gt;
;;;&lt;br /&gt;
;; Detta program implementerar ett litet neuralt nät och tränar det på sannings-&lt;br /&gt;
;; tabellen för XOR. Efter några tusen epoker ska prediktionerna ligga extremt nära&lt;br /&gt;
;; följande:&lt;br /&gt;
;;&lt;br /&gt;
;; a,b → a XOR b&lt;br /&gt;
;; 0,0 →    0&lt;br /&gt;
;; 0,1 →    1&lt;br /&gt;
;; 1,0 →    1&lt;br /&gt;
;; 1,1 →    0&lt;br /&gt;
;;&lt;br /&gt;
;; Implementationen har två input-neuroner för a och b&lt;br /&gt;
;; det finns 5 interna (dolda neuroner) som tränas av indatat&lt;br /&gt;
;; det finns 1 output-neuron som ger svaret&lt;br /&gt;
;;&lt;br /&gt;
;;;;; Kodens uppbyggnad och de olika funktionernas användning&lt;br /&gt;
;;&lt;br /&gt;
;; sigmoid, sigmoid-deriv      Sigmoid-kurva och derivata för backpropagation&lt;br /&gt;
;;&lt;br /&gt;
;; random-matrix, met-vec-mul  Grundläggande linalg&lt;br /&gt;
;; outer-product; vec-add&lt;br /&gt;
;;&lt;br /&gt;
;; struct nn                   Nätverksstruktur, lagrar vikter och bias&lt;br /&gt;
;;&lt;br /&gt;
;; forward                     Beräknar prediktion&lt;br /&gt;
;;&lt;br /&gt;
;; train-step                  En iteration av backpropagation&lt;br /&gt;
;;&lt;br /&gt;
;; train                       Kör många epoker av in och förväntat utdata för&lt;br /&gt;
;;                             att träna modellen&lt;br /&gt;
;;&lt;br /&gt;
;; predict                     Använder nätverket på ny data!&lt;br /&gt;
;;&lt;br /&gt;
;;&lt;br /&gt;
;;;;; Viktiga delar&lt;br /&gt;
;;&lt;br /&gt;
;; * sigmoid mappar alla värden steglöst till intervallet (0,1)&lt;br /&gt;
;; * derivatan används i backpropagation för att räkna ut gradienten&lt;br /&gt;
;;&lt;br /&gt;
;; w1: vikter mellan input och hidden layer (5x2 matris)&lt;br /&gt;
;; b1: bias för hidden layer (5-vektor)&lt;br /&gt;
;; w2: viktar mellan hidden och output (1x5 matris)&lt;br /&gt;
;; b2: bias för output (1-vektor)&lt;br /&gt;
;;&lt;br /&gt;
;; Forward pass&lt;br /&gt;
;;&lt;br /&gt;
;; 1. Beräkna aktivering i hidden layer&lt;br /&gt;
;;    z1 = W1 * input + b1&lt;br /&gt;
;;    h = rho z1&lt;br /&gt;
;; 2. Beräkna output&lt;br /&gt;
;;    z2 = W2 * h +b2&lt;br /&gt;
;;    output = rho(z2)&lt;br /&gt;
;;&lt;br /&gt;
;; Backpropagation (uppdatering av viktningen)&lt;br /&gt;
;;&lt;br /&gt;
;; Hjärtat i träningen av ett neuralt nät. Algorimen är &amp;quot;gradient descent&amp;quot; med batch-&lt;br /&gt;
;; storlek 1.&lt;br /&gt;
;;&lt;br /&gt;
;; 1. Forward pass hidden → output&lt;br /&gt;
;; 2. Output-felet&lt;br /&gt;
;;    delta = (output - target) X rho&amp;#039; (output)&lt;br /&gt;
;; 3. Hidden-felet&lt;br /&gt;
;;    delta hidden = (W2/T * delta out) X rho&amp;#039; (hidden)&lt;br /&gt;
;; 4. Uppdatera vikternas gradienter&lt;br /&gt;
;;    W2 ← W2 - nabla * delta out * h^T&lt;br /&gt;
;;    W1 ← W1 - nabla * delta hidden * input^T&lt;br /&gt;
;; 5. Bias uppdateras på samma sätt (jo det är en genväg)&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
(require math/base)&lt;br /&gt;
&lt;br /&gt;
;; ========================================&lt;br /&gt;
;; Aktiveringsfunktioner&lt;br /&gt;
;; ========================================&lt;br /&gt;
(define (sigmoid x)&lt;br /&gt;
  (/ 1.0 (+ 1.0 (exp (- x)))))&lt;br /&gt;
&lt;br /&gt;
(define (sigmoid-deriv y)   ; y måste redan vara sigmoid(x)&lt;br /&gt;
  (* y (- 1.0 y)))&lt;br /&gt;
&lt;br /&gt;
;; ========================================&lt;br /&gt;
;; Matris-/vektorhjälp (enkel version)&lt;br /&gt;
;; ========================================&lt;br /&gt;
(define (random-matrix rows cols)&lt;br /&gt;
  (build-vector rows&lt;br /&gt;
                (λ (_) (build-vector cols (λ (_) (- (* 2.0 (random)) 1.0))))))&lt;br /&gt;
&lt;br /&gt;
(define (vec-add v1 v2)     ; elementvis addition av två vektorer&lt;br /&gt;
  (build-vector (vector-length v1)&lt;br /&gt;
                (λ (i) (+ (vector-ref v1 i) (vector-ref v2 i)))))&lt;br /&gt;
&lt;br /&gt;
(define (scalar-mul s v)&lt;br /&gt;
  (build-vector (vector-length v) (λ (i) (* s (vector-ref v i)))))&lt;br /&gt;
&lt;br /&gt;
(define (outer-product v1 v2)   ; v1 kolumn × v2 rad → matris&lt;br /&gt;
  (build-vector (vector-length v1)&lt;br /&gt;
                (λ (i)&lt;br /&gt;
                  (build-vector (vector-length v2)&lt;br /&gt;
                                (λ (j) (* (vector-ref v1 i) (vector-ref v2 j)))))))&lt;br /&gt;
&lt;br /&gt;
(define (mat-vec-mul M v)       ; M (rows×cols) × v (cols)&lt;br /&gt;
  (build-vector (vector-length M)&lt;br /&gt;
                (λ (i)&lt;br /&gt;
                  (for/sum ([j (in-range (vector-length v))])&lt;br /&gt;
                    (* (vector-ref (vector-ref M i) j)&lt;br /&gt;
                       (vector-ref v j))))))&lt;br /&gt;
&lt;br /&gt;
(define (transpose M)&lt;br /&gt;
  (build-vector (vector-length (vector-ref M 0))&lt;br /&gt;
                (λ (j)&lt;br /&gt;
                  (build-vector (vector-length M)&lt;br /&gt;
                                (λ (i) (vector-ref (vector-ref M i) j))))))&lt;br /&gt;
&lt;br /&gt;
;; ========================================&lt;br /&gt;
;; Neuralt nätverk&lt;br /&gt;
;; ========================================&lt;br /&gt;
(struct nn (w1 b1 w2 b2) #:transparent)&lt;br /&gt;
&lt;br /&gt;
(define (make-nn in-size hidden-size out-size)&lt;br /&gt;
  (nn (random-matrix hidden-size in-size)&lt;br /&gt;
      (make-vector hidden-size 0.0)&lt;br /&gt;
      (random-matrix out-size hidden-size)&lt;br /&gt;
      (make-vector out-size 0.0)))&lt;br /&gt;
&lt;br /&gt;
(define (forward net input)          ; input är en vektor t.ex. #(0 0)&lt;br /&gt;
  (let* ([z1 (vec-add (mat-vec-mul (nn-w1 net) input)&lt;br /&gt;
                      (nn-b1 net))]&lt;br /&gt;
         [h  (build-vector (vector-length z1) (λ (i) (sigmoid (vector-ref z1 i))))]&lt;br /&gt;
         [z2 (vec-add (mat-vec-mul (nn-w2 net) h)&lt;br /&gt;
                      (nn-b2 net))]&lt;br /&gt;
         [o  (build-vector (vector-length z2) (λ (i) (sigmoid (vector-ref z2 i))))])&lt;br /&gt;
    (values o h)))&lt;br /&gt;
&lt;br /&gt;
(define (train-step net input target lr)&lt;br /&gt;
  (let-values ([(output hidden) (forward net input)])&lt;br /&gt;
    (let* ([out-err (build-vector (vector-length output)&lt;br /&gt;
                                  (λ (i) (- (vector-ref output i)&lt;br /&gt;
                                            (vector-ref target i))))]&lt;br /&gt;
           [out-delta (build-vector (vector-length output)&lt;br /&gt;
                                    (λ (i) (* (vector-ref out-err i)&lt;br /&gt;
                                              (sigmoid-deriv (vector-ref output i)))))]&lt;br /&gt;
&lt;br /&gt;
           [hidden-err (mat-vec-mul (transpose (nn-w2 net)) out-delta)]&lt;br /&gt;
           [hidden-delta (build-vector (vector-length hidden)&lt;br /&gt;
                                       (λ (i) (* (vector-ref hidden-err i)&lt;br /&gt;
                                                 (sigmoid-deriv (vector-ref hidden i)))))]&lt;br /&gt;
&lt;br /&gt;
           ;; Uppdateringar&lt;br /&gt;
           [dw2 (outer-product out-delta hidden)]&lt;br /&gt;
           [new-w2 (build-vector (vector-length (nn-w2 net))&lt;br /&gt;
                                 (λ (i)&lt;br /&gt;
                                   (build-vector (vector-length (vector-ref (nn-w2 net) i))&lt;br /&gt;
                                                 (λ (j) (- (vector-ref (vector-ref (nn-w2 net) i) j)&lt;br /&gt;
                                                           (* lr (vector-ref (vector-ref dw2 i) j)))))))]&lt;br /&gt;
           [new-b2 (build-vector (vector-length (nn-b2 net))&lt;br /&gt;
                                 (λ (i) (- (vector-ref (nn-b2 net) i)&lt;br /&gt;
                                           (* lr (vector-ref out-delta i)))))]&lt;br /&gt;
&lt;br /&gt;
           [dw1 (outer-product hidden-delta input)]&lt;br /&gt;
           [new-w1 (build-vector (vector-length (nn-w1 net))&lt;br /&gt;
                                 (λ (i)&lt;br /&gt;
                                   (build-vector (vector-length (vector-ref (nn-w1 net) i))&lt;br /&gt;
                                                 (λ (j) (- (vector-ref (vector-ref (nn-w1 net) i) j)&lt;br /&gt;
                                                           (* lr (vector-ref (vector-ref dw1 i) j)))))))]&lt;br /&gt;
           [new-b1 (build-vector (vector-length (nn-b1 net))&lt;br /&gt;
                                 (λ (i) (- (vector-ref (nn-b1 net) i)&lt;br /&gt;
                                           (* lr (vector-ref hidden-delta i)))))])&lt;br /&gt;
&lt;br /&gt;
      (nn new-w1 new-b1 new-w2 new-b2))))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;; ========================================&lt;br /&gt;
;; Skriv ut vikter och bias – snygg tabell (fixad version)&lt;br /&gt;
;; ========================================&lt;br /&gt;
(define (print-nn net)&lt;br /&gt;
  (printf &amp;quot;\n=== NEURALT NÄTVERK - VIKTER OCH BIAS ===\n\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  ;; Hjälpfunktion för att formatera tal snyggt (med minustecken på rätt plats)&lt;br /&gt;
  (define (fmt x)&lt;br /&gt;
    (~r x &lt;br /&gt;
        #:min-width 10 &lt;br /&gt;
        #:precision &amp;#039;(= 4)&lt;br /&gt;
        #:sign #f))          ; #f = visa minus för negativa, inget tecken för positiva&lt;br /&gt;
&lt;br /&gt;
  ;; W1: Vikter från input till hidden (5×2)&lt;br /&gt;
  (printf &amp;quot;W1 (Hidden × Input):\n&amp;quot;)&lt;br /&gt;
  (printf &amp;quot;          Input0      Input1\n&amp;quot;)&lt;br /&gt;
  (for ([i (in-range (vector-length (nn-w1 net)))])&lt;br /&gt;
    (printf &amp;quot;Hidden~a  &amp;quot; i)&lt;br /&gt;
    (for ([j (in-range 2)])&lt;br /&gt;
      (printf &amp;quot;~a  &amp;quot; (fmt (vector-ref (vector-ref (nn-w1 net) i) j))))&lt;br /&gt;
    (printf &amp;quot;\n&amp;quot;))&lt;br /&gt;
  (printf &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  ;; b1: Bias för hidden layer&lt;br /&gt;
  (printf &amp;quot;b1 (Bias hidden layer):\n&amp;quot;)&lt;br /&gt;
  (for ([i (in-range (vector-length (nn-b1 net)))])&lt;br /&gt;
    (printf &amp;quot;~a  &amp;quot; (fmt (vector-ref (nn-b1 net) i))))&lt;br /&gt;
  (printf &amp;quot;\n\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  ;; W2: Vikter från hidden till output (1×5)&lt;br /&gt;
  (printf &amp;quot;W2 (Output × Hidden):\n&amp;quot;)&lt;br /&gt;
  (printf &amp;quot;         Hidden0     Hidden1     Hidden2     Hidden3     Hidden4\n&amp;quot;)&lt;br /&gt;
  (printf &amp;quot;Output   &amp;quot;)&lt;br /&gt;
  (for ([j (in-range 5)])&lt;br /&gt;
    (printf &amp;quot;~a  &amp;quot; (fmt (vector-ref (vector-ref (nn-w2 net) 0) j))))&lt;br /&gt;
  (printf &amp;quot;\n\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  ;; b2: Bias för output&lt;br /&gt;
  (printf &amp;quot;b2 (Bias output):\n&amp;quot;)&lt;br /&gt;
  (printf &amp;quot;~a\n&amp;quot; (fmt (vector-ref (nn-b2 net) 0)))&lt;br /&gt;
&lt;br /&gt;
  (printf &amp;quot;\n========================================\n&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;; Träna nätverket&lt;br /&gt;
(define (train net data epochs lr)&lt;br /&gt;
  (for ([ep (in-range epochs)])&lt;br /&gt;
    (for ([sample data])&lt;br /&gt;
      (set! net (train-step net (car sample) (cadr sample) lr)))&lt;br /&gt;
    &lt;br /&gt;
    (when (zero? (modulo ep 500))      ; oftare än var 1000:e&lt;br /&gt;
      (let ([loss (for/sum ([sample data])&lt;br /&gt;
                    (let-values ([(output _) (forward net (car sample))])&lt;br /&gt;
                      (let ([target (vector-ref (cadr sample) 0)]&lt;br /&gt;
                            [pred   (vector-ref output 0)])&lt;br /&gt;
                        (sqr (- target pred)))))])&lt;br /&gt;
        (printf &amp;quot;Epoch ~a  Loss: ~a\n&amp;quot; ep (/ loss (length data))))))&lt;br /&gt;
  (print-nn net)&lt;br /&gt;
  net)&lt;br /&gt;
&lt;br /&gt;
;; Prediktera&lt;br /&gt;
(define (predict net input)&lt;br /&gt;
  (let-values ([(output _) (forward net input)])&lt;br /&gt;
    output))&lt;br /&gt;
&lt;br /&gt;
;; ========================================&lt;br /&gt;
;; XOR-exempel&lt;br /&gt;
;; ========================================&lt;br /&gt;
(define xor-data&lt;br /&gt;
  (list (list #(0 0) #(0))&lt;br /&gt;
        (list #(0 1) #(1))&lt;br /&gt;
        (list #(1 0) #(1))&lt;br /&gt;
        (list #(1 1) #(0))))&lt;br /&gt;
&lt;br /&gt;
(define net (make-nn 2 5 1))   ; 2 input, 5 dolda neuroner, 1 output&lt;br /&gt;
(define rounds 8000) ; 2000 är i minsta laget, 5000 eller hellre 8000 är bättre&lt;br /&gt;
(define backpr 0.7)&lt;br /&gt;
(printf &amp;quot;Tränar XOR-problemet i ~a rundor med backprop styrka ~a\n&amp;quot; rounds backpr)&lt;br /&gt;
(set! net (train net xor-data rounds backpr))&lt;br /&gt;
&lt;br /&gt;
(printf &amp;quot;\n=== Testresultat ===\n&amp;quot;)&lt;br /&gt;
(for ([sample xor-data])&lt;br /&gt;
  (let ([pred (vector-ref (predict net (car sample)) 0)])&lt;br /&gt;
    (printf &amp;quot;Input ~a  →  Förväntat: ~a  Predikterat: ~a\n&amp;quot;&lt;br /&gt;
            (car sample)&lt;br /&gt;
            (vector-ref (cadr sample) 0)&lt;br /&gt;
            (if (&amp;gt; pred 0.5) 1.0 0.0))))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sun, 05 Apr 2026 13:01:16 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Neural</comments>
		</item>
		<item>
			<title>Racket/Neural</title>
			<link>http://wiki.sikvall.se/index.php/Racket/Neural</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php/Racket/Neural</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php/Anv%C3%A4ndare:Anders&quot; class=&quot;mw-userlink&quot; title=&quot;Användare:Anders&quot;&gt;&lt;bdi&gt;Anders&lt;/bdi&gt;&lt;/a&gt; raderade sidan &lt;a href=&quot;/index.php/Racket/Neural&quot; title=&quot;Racket/Neural&quot;&gt;Racket/Neural&lt;/a&gt; innehållet var: &amp;quot;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; Neuralt nät implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;    ;;;;; NEURALT NÄT ;;; ;; Detta program implementerar ett litet neuralt nät och tränar det på sannings- ;; tabellen för XOR. Efter några tusen epoker ska prediktionerna ligga extremt nära ;; följande: ;; ;; a,b → a XOR b ;; 0,0 →    0 ;;...&amp;quot;, den enda som skrivit var &amp;quot;&lt;a href=&quot;/index.php/Special:Bidrag/Anders&quot; title=&quot;Special:Bidrag/Anders&quot;&gt;Anders&lt;/a&gt;&amp;quot; (&lt;a href=&quot;/index.php?title=Anv%C3%A4ndardiskussion:Anders&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Användardiskussion:Anders (sidan existerar inte)&quot;&gt;diskussion&lt;/a&gt;)&lt;/p&gt;
</description>
			<pubDate>Sun, 05 Apr 2026 13:01:12 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Neural</comments>
		</item>
		<item>
			<title>Racket/Genetic</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/Genetic&amp;diff=1831&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/Genetic&amp;diff=1831&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt;  #lang racket  ;;;;; ;; Genetisk algoritm implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;   ;; ================================================================ ;; Genetisk algoritm – Hitta kromosom med: ;;   1. De första 10 bitarna = 1 ;;   2. Totalt antal 1:or så nära 50 som möjligt ;; ================================================================  ;; --------------------- Parametrar --------------------- (define populatio...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#lang racket&lt;br /&gt;
&lt;br /&gt;
;;;;;&lt;br /&gt;
;; Genetisk algoritm implementerad i Racket&lt;br /&gt;
;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se&lt;br /&gt;
;;;;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;; ================================================================&lt;br /&gt;
;; Genetisk algoritm – Hitta kromosom med:&lt;br /&gt;
;;   1. De första 10 bitarna = 1&lt;br /&gt;
;;   2. Totalt antal 1:or så nära 50 som möjligt&lt;br /&gt;
;; ================================================================&lt;br /&gt;
&lt;br /&gt;
;; --------------------- Parametrar ---------------------&lt;br /&gt;
(define population-size 100)&lt;br /&gt;
(define chromosome-length 200)&lt;br /&gt;
(define generations 5000)&lt;br /&gt;
(define mutation-rate 0.01)&lt;br /&gt;
&lt;br /&gt;
;; --------------------- Hjälpfunktioner ---------------------&lt;br /&gt;
&lt;br /&gt;
;; Skapar en slumpmässig kromosom (lista med 0 och 1)&lt;br /&gt;
(define (random-chromosome)&lt;br /&gt;
  (for/list ([_ (in-range chromosome-length)])&lt;br /&gt;
    (random 2)))&lt;br /&gt;
&lt;br /&gt;
;; Fitness-funktion&lt;br /&gt;
;;   - 1000 poäng om de första 6 bitarna är alla 1:or&lt;br /&gt;
;;   - upp till 1000 poäng om antalet 1:or är exakt 50&lt;br /&gt;
(define (fitness chrom)&lt;br /&gt;
  (define prefix-5 (take chrom 5))&lt;br /&gt;
  (define num-ones  (apply + chrom))&lt;br /&gt;
&lt;br /&gt;
  (define prefix-bonus (if (andmap (λ (x) (= x 1)) prefix-5) 1000 0))&lt;br /&gt;
  (define distance     (abs (- num-ones 50)))&lt;br /&gt;
&lt;br /&gt;
  (+ prefix-bonus (- 1000 distance)))&lt;br /&gt;
&lt;br /&gt;
;; Tournament selection (storlek 5)&lt;br /&gt;
(define (select-parent population)&lt;br /&gt;
  (define tournament-size 5)&lt;br /&gt;
  (argmax fitness&lt;br /&gt;
          (for/list ([_ (in-range tournament-size)])&lt;br /&gt;
            (list-ref population (random (length population))))))&lt;br /&gt;
&lt;br /&gt;
;; Single-point crossover&lt;br /&gt;
(define (crossover parent1 parent2)&lt;br /&gt;
  (define point (add1 (random (sub1 chromosome-length))))&lt;br /&gt;
  (append (take parent1 point)&lt;br /&gt;
          (drop parent2 point)))&lt;br /&gt;
&lt;br /&gt;
;; Mutation&lt;br /&gt;
(define (mutate chrom)&lt;br /&gt;
  (for/list ([gene chrom])&lt;br /&gt;
    (if (&amp;lt; (random) mutation-rate)&lt;br /&gt;
        (- 1 gene)&lt;br /&gt;
        gene)))&lt;br /&gt;
&lt;br /&gt;
;; Skapar nästa generation (utan elitism ännu)&lt;br /&gt;
(define (next-generation population)&lt;br /&gt;
  (for/list ([_ (in-range population-size)])&lt;br /&gt;
    (define p1 (select-parent population))&lt;br /&gt;
    (define p2 (select-parent population))&lt;br /&gt;
    (mutate (crossover p1 p2))))&lt;br /&gt;
&lt;br /&gt;
;; --------------------- Huvudalgoritm ---------------------&lt;br /&gt;
&lt;br /&gt;
(define (genetic-algorithm)&lt;br /&gt;
  (printf &amp;quot;Startar genetisk algoritm...\n&amp;quot;)&lt;br /&gt;
  (printf &amp;quot;Mål: Första 5 bitar = 1 och totalt ~a ettor\n\n&amp;quot; 50)&lt;br /&gt;
&lt;br /&gt;
  (define initial-population&lt;br /&gt;
    (for/list ([_ (in-range population-size)])&lt;br /&gt;
      (random-chromosome)))&lt;br /&gt;
&lt;br /&gt;
  (define (evolve population generation)&lt;br /&gt;
    (define best (argmax fitness population))&lt;br /&gt;
    (define best-fitness (fitness best))&lt;br /&gt;
    (define num-ones     (apply + best))&lt;br /&gt;
    (define prefix-ok?   (andmap (λ (x) (= x 1)) (take best 5)))&lt;br /&gt;
&lt;br /&gt;
    (printf &amp;quot;Gen ~a | Fitness: ~a | Ettor: ~a | Prefix OK: ~a\n&amp;quot;&lt;br /&gt;
            (~a generation #:width 4 #:align &amp;#039;right)&lt;br /&gt;
            best-fitness&lt;br /&gt;
            num-ones&lt;br /&gt;
            (if prefix-ok? &amp;quot;Ja&amp;quot; &amp;quot;Nej&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    (cond&lt;br /&gt;
      [(= best-fitness 2000)&lt;br /&gt;
       (printf &amp;quot;\n=== PERFEKT LÖSNING HITTAD! ===\n&amp;quot;)&lt;br /&gt;
       (printf &amp;quot;Generation: ~a\n&amp;quot; generation)&lt;br /&gt;
       (printf &amp;quot;Kromosom:   ~a\n&amp;quot; best)&lt;br /&gt;
       (printf &amp;quot;Antal ettor: ~a\n&amp;quot; num-ones)]&lt;br /&gt;
&lt;br /&gt;
      [(&amp;gt;= generation generations)&lt;br /&gt;
       (printf &amp;quot;\n=== Max generationer nådda ===\n&amp;quot;)&lt;br /&gt;
       (printf &amp;quot;Bästa lösning:\n&amp;quot;)&lt;br /&gt;
       (printf &amp;quot;  Fitness:     ~a\n&amp;quot; best-fitness)&lt;br /&gt;
       (printf &amp;quot;  Antal ettor: ~a\n&amp;quot; num-ones)&lt;br /&gt;
       (printf &amp;quot;  Första 10:   ~a\n&amp;quot; (take best 10))]&lt;br /&gt;
&lt;br /&gt;
      [else&lt;br /&gt;
       (evolve (next-generation population) (add1 generation))]))&lt;br /&gt;
&lt;br /&gt;
  (evolve initial-population 0))&lt;br /&gt;
&lt;br /&gt;
;; --------------------- Kör programmet ---------------------&lt;br /&gt;
(genetic-algorithm)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sun, 05 Apr 2026 13:00:43 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Genetic</comments>
		</item>
		<item>
			<title>Racket/Genetic</title>
			<link>http://wiki.sikvall.se/index.php/Racket/Genetic</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php/Racket/Genetic</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php/Anv%C3%A4ndare:Anders&quot; class=&quot;mw-userlink&quot; title=&quot;Användare:Anders&quot;&gt;&lt;bdi&gt;Anders&lt;/bdi&gt;&lt;/a&gt; raderade sidan &lt;a href=&quot;/index.php/Racket/Genetic&quot; title=&quot;Racket/Genetic&quot;&gt;Racket/Genetic&lt;/a&gt; innehållet var: &amp;quot;&amp;lt;pre&amp;gt;  #lang racket  ;;;;; ;; Genetisk algoritm implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;   ;; ================================================================ ;; Genetisk algoritm – Hitta kromosom med: ;;   1. De första 10 bitarna = 1 ;;   2. Totalt antal 1:or så nära 50 som möjligt ;; ==========================================...&amp;quot;, den enda som skrivit var &amp;quot;&lt;a href=&quot;/index.php/Special:Bidrag/Anders&quot; title=&quot;Special:Bidrag/Anders&quot;&gt;Anders&lt;/a&gt;&amp;quot; (&lt;a href=&quot;/index.php?title=Anv%C3%A4ndardiskussion:Anders&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Användardiskussion:Anders (sidan existerar inte)&quot;&gt;diskussion&lt;/a&gt;)&lt;/p&gt;
</description>
			<pubDate>Sun, 05 Apr 2026 13:00:38 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Genetic</comments>
		</item>
		<item>
			<title>Racket/Lille-GUI</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/Lille-GUI&amp;diff=1830&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/Lille-GUI&amp;diff=1830&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt; #lang racket/gui  ;;;;; ;; Riktigt Enkelt GUI-Demo implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;  ;; Skapa huvudfönstret (define frame   (new frame%        [label &amp;quot;Racket GUI Demo&amp;quot;]        [width 520]        [height 420]))  ;; Meny (define menu-bar (new menu-bar% [parent frame]))  (define menu-file (new menu% [label &amp;quot;Arkiv&amp;quot;] [parent menu-bar])) (new menu-item% [label &amp;quot;Öppna...&amp;quot;] [parent menu-file]      [callback (λ (i e) (mess...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#lang racket/gui&lt;br /&gt;
&lt;br /&gt;
;;;;;&lt;br /&gt;
;; Riktigt Enkelt GUI-Demo implementerad i Racket&lt;br /&gt;
;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se&lt;br /&gt;
;;;;;&lt;br /&gt;
&lt;br /&gt;
;; Skapa huvudfönstret&lt;br /&gt;
(define frame&lt;br /&gt;
  (new frame%&lt;br /&gt;
       [label &amp;quot;Racket GUI Demo&amp;quot;]&lt;br /&gt;
       [width 520]&lt;br /&gt;
       [height 420]))&lt;br /&gt;
&lt;br /&gt;
;; Meny&lt;br /&gt;
(define menu-bar (new menu-bar% [parent frame]))&lt;br /&gt;
&lt;br /&gt;
(define menu-file (new menu% [label &amp;quot;Arkiv&amp;quot;] [parent menu-bar]))&lt;br /&gt;
(new menu-item% [label &amp;quot;Öppna...&amp;quot;] [parent menu-file]&lt;br /&gt;
     [callback (λ (i e) (message-box &amp;quot;Öppna&amp;quot; &amp;quot;Filöppning simulerad&amp;quot;))])&lt;br /&gt;
(new menu-item% [label &amp;quot;Spara&amp;quot;] [parent menu-file]&lt;br /&gt;
     [callback (λ (i e) (message-box &amp;quot;Spara&amp;quot; &amp;quot;Filen sparad!&amp;quot;))])&lt;br /&gt;
(new separator-menu-item% [parent menu-file])&lt;br /&gt;
(new menu-item% [label &amp;quot;Avsluta&amp;quot;] [parent menu-file]&lt;br /&gt;
     [callback (λ (i e) (send frame show #f))])&lt;br /&gt;
&lt;br /&gt;
(define menu-help (new menu% [label &amp;quot;Hjälp&amp;quot;] [parent menu-bar]))&lt;br /&gt;
(new menu-item% [label &amp;quot;Om programmet&amp;quot;] [parent menu-help]&lt;br /&gt;
     [callback (λ (i e) (message-box &amp;quot;Om&amp;quot; &amp;quot;Racket GUI Demo\nPedagogisk exempel&amp;quot;))])&lt;br /&gt;
&lt;br /&gt;
;; Lite layouting av dialogen&lt;br /&gt;
(define main-panel&lt;br /&gt;
  (new vertical-panel% [parent frame] [spacing 12] [border 15]))&lt;br /&gt;
&lt;br /&gt;
;; Rubrik&lt;br /&gt;
(new message%&lt;br /&gt;
     [parent main-panel]&lt;br /&gt;
     [label &amp;quot;Välkommen till Racket GUI-demo!&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
;; Input-fält, 2 st, namn och epost&lt;br /&gt;
(define name-field&lt;br /&gt;
  (new text-field% [parent main-panel] [label &amp;quot;Namn:&amp;quot;] [init-value &amp;quot;Anna Andersson&amp;quot;]))&lt;br /&gt;
&lt;br /&gt;
(define email-field&lt;br /&gt;
  (new text-field% [parent main-panel] [label &amp;quot;E-post:&amp;quot;] [init-value &amp;quot;anna@example.com&amp;quot;]))&lt;br /&gt;
&lt;br /&gt;
;; Radio buttons för att välja färg&lt;br /&gt;
(define color-group&lt;br /&gt;
  (new group-box-panel% [parent main-panel] [label &amp;quot;Favoritfärg&amp;quot;]))&lt;br /&gt;
&lt;br /&gt;
(define color-radio&lt;br /&gt;
  (new radio-box% [parent color-group] [label #f]&lt;br /&gt;
       [choices &amp;#039;(&amp;quot;Röd&amp;quot; &amp;quot;Grön&amp;quot; &amp;quot;Blå&amp;quot; &amp;quot;Gul&amp;quot;)]&lt;br /&gt;
       [style &amp;#039;(vertical)]))&lt;br /&gt;
&lt;br /&gt;
;; Knappar för rensa och skicka&lt;br /&gt;
(define btn-panel&lt;br /&gt;
  (new horizontal-panel% [parent main-panel] [alignment &amp;#039;(center center)] [spacing 20]))&lt;br /&gt;
&lt;br /&gt;
(new button% [parent btn-panel] [label &amp;quot;Rensa&amp;quot;]&lt;br /&gt;
     [callback (λ (b e)&lt;br /&gt;
                 (send name-field set-value &amp;quot;&amp;quot;)&lt;br /&gt;
                 (send email-field set-value &amp;quot;&amp;quot;)&lt;br /&gt;
                 (send color-radio set-selection 0))])&lt;br /&gt;
&lt;br /&gt;
(new button% [parent btn-panel] [label &amp;quot;Skicka&amp;quot;] [style &amp;#039;(border)]&lt;br /&gt;
     [callback (λ (b e)&lt;br /&gt;
                 (define name (send name-field get-value))&lt;br /&gt;
                 (define email (send email-field get-value))&lt;br /&gt;
                 (define color (list-ref &amp;#039;(&amp;quot;Röd&amp;quot; &amp;quot;Grön&amp;quot; &amp;quot;Blå&amp;quot; &amp;quot;Gul&amp;quot;)&lt;br /&gt;
                                         (send color-radio get-selection)))&lt;br /&gt;
                 (message-box &amp;quot;Tack!&amp;quot; &lt;br /&gt;
                              (format &amp;quot;Hej ~a!\n\nE-post: ~a\nFavoritfärg: ~a&amp;quot; &lt;br /&gt;
                                      name email color)))])&lt;br /&gt;
&lt;br /&gt;
;; Centrera fönstret och starta GUI&lt;br /&gt;
(send frame center)&lt;br /&gt;
(send frame show #t)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sun, 05 Apr 2026 12:59:54 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Lille-GUI</comments>
		</item>
		<item>
			<title>Racket/Lille-GUI</title>
			<link>http://wiki.sikvall.se/index.php/Racket/Lille-GUI</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php/Racket/Lille-GUI</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php/Anv%C3%A4ndare:Anders&quot; class=&quot;mw-userlink&quot; title=&quot;Användare:Anders&quot;&gt;&lt;bdi&gt;Anders&lt;/bdi&gt;&lt;/a&gt; raderade sidan &lt;a href=&quot;/index.php/Racket/Lille-GUI&quot; title=&quot;Racket/Lille-GUI&quot;&gt;Racket/Lille-GUI&lt;/a&gt; Före radering: &amp;quot;&amp;lt;pre&amp;gt; #lang racket/gui  ;;;;; ;; Riktigt Enkelt GUI-Demo implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;  ;; Skapa huvudfönstret (define frame   (new frame%        [label &amp;quot;Racket GUI Demo&amp;quot;]        [width 520]        [height 420]))  ;; Meny (define menu-bar (new menu-bar% [parent frame]))  (define menu-file (new menu% [label &amp;quot;Arkiv&amp;quot;] [parent menu-bar])) (new menu-item% [label &amp;quot;Öppna...&amp;quot;] [parent menu-file]      [callback (λ (i e) (message-...&amp;quot;&lt;/p&gt;
</description>
			<pubDate>Sun, 05 Apr 2026 12:59:47 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Lille-GUI</comments>
		</item>
		<item>
			<title>Racket/Personreg</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/Personreg&amp;diff=1829&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/Personreg&amp;diff=1829&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; Enkel personinfodatabas implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;  ;; Global lista som håller alla personer, just nu tom (define personer &amp;#039;())  ;; Skapa en person med namngivna parametrar (define (skapa-person          #:förnamn förnamn          #:efternamn efternamn          #:ålder ålder          #:stad [stad &amp;quot;&amp;quot;]           ;Valfria parametrar med defaultvärden          #:telefon [telefon &amp;quot;&amp;quot;])...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#lang racket&lt;br /&gt;
&lt;br /&gt;
;;;;;&lt;br /&gt;
;; Enkel personinfodatabas implementerad i Racket&lt;br /&gt;
;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se&lt;br /&gt;
;;;;;&lt;br /&gt;
&lt;br /&gt;
;; Global lista som håller alla personer, just nu tom&lt;br /&gt;
(define personer &amp;#039;())&lt;br /&gt;
&lt;br /&gt;
;; Skapa en person med namngivna parametrar&lt;br /&gt;
(define (skapa-person&lt;br /&gt;
         #:förnamn förnamn&lt;br /&gt;
         #:efternamn efternamn&lt;br /&gt;
         #:ålder ålder&lt;br /&gt;
         #:stad [stad &amp;quot;&amp;quot;]           ;Valfria parametrar med defaultvärden&lt;br /&gt;
         #:telefon [telefon &amp;quot;&amp;quot;])&lt;br /&gt;
  (define person (list (cons &amp;#039;förnamn förnamn)         ;när man consar par såhär&lt;br /&gt;
                       (cons &amp;#039;efternamn efternamn)     ;måste man använda car/cdr!&lt;br /&gt;
                       (cons &amp;#039;ålder ålder)&lt;br /&gt;
                       (cons &amp;#039;stad stad)&lt;br /&gt;
                       (cons &amp;#039;telefon telefon)))&lt;br /&gt;
&lt;br /&gt;
  (set! personer (cons person personer)) ; lägger till en person i listan personer och returnerar&lt;br /&gt;
  person)                                ; sedan samma person&lt;br /&gt;
&lt;br /&gt;
;; Sökfunktion (oförändrad)&lt;br /&gt;
(define hitta-person&lt;br /&gt;
  (make-keyword-procedure&lt;br /&gt;
   (lambda (keywords keyword-values . rest)&lt;br /&gt;
     (if (empty? keywords)&lt;br /&gt;
         personer&lt;br /&gt;
         (filter (λ (person)&lt;br /&gt;
                   (for/and ([kw keywords]&lt;br /&gt;
                             [val keyword-values])&lt;br /&gt;
                     (let ([field-key (string-&amp;gt;symbol (keyword-&amp;gt;string kw))])&lt;br /&gt;
                       (let ([found (assoc field-key person)])&lt;br /&gt;
                         (and found&lt;br /&gt;
                              (equal? (string-downcase (format &amp;quot;~a&amp;quot; val))&lt;br /&gt;
                                      (string-downcase (format &amp;quot;~a&amp;quot; (cdr found)))))))))&lt;br /&gt;
                 personer)))))&lt;br /&gt;
&lt;br /&gt;
;; Pretty-print funktioner&lt;br /&gt;
(define (pretty-print-person person)&lt;br /&gt;
  (printf &amp;quot;  Förnamn:   ~a\n&amp;quot; (cdr (assoc &amp;#039;förnamn person)))    ;här går det inte använda rest&lt;br /&gt;
  (printf &amp;quot;  Efternamn: ~a\n&amp;quot; (cdr (assoc &amp;#039;efternamn person)))  ;för det är inte en lista, det&lt;br /&gt;
  (printf &amp;quot;  Ålder:     ~a\n&amp;quot; (cdr (assoc &amp;#039;ålder person)))      ;är ett consat par (ålder . 34)&lt;br /&gt;
  &lt;br /&gt;
  (let ([stad (cdr (assoc &amp;#039;stad person))])&lt;br /&gt;
    (when (and stad (not (equal? stad &amp;quot;&amp;quot;)))&lt;br /&gt;
      (printf &amp;quot;  Stad:      ~a\n&amp;quot; stad)))&lt;br /&gt;
  &lt;br /&gt;
  (let ([telefon (cdr (assoc &amp;#039;telefon person))])&lt;br /&gt;
    (when (and telefon (not (equal? telefon &amp;quot;&amp;quot;)))&lt;br /&gt;
      (printf &amp;quot;  Telefon:   ~a\n&amp;quot; telefon)))&lt;br /&gt;
  &lt;br /&gt;
  (newline))&lt;br /&gt;
&lt;br /&gt;
(define (pretty-print-persons lst)&lt;br /&gt;
  (if (empty? lst)&lt;br /&gt;
      (displayln &amp;quot;  Inga personer hittades.&amp;quot;)&lt;br /&gt;
      (for ([p (reverse lst)])&lt;br /&gt;
        (pretty-print-person p))))&lt;br /&gt;
&lt;br /&gt;
;; Spara och ladda – Lispformat (.dat)&lt;br /&gt;
(define data-fil &amp;quot;personer.dat&amp;quot;) ;default filnamn&lt;br /&gt;
&lt;br /&gt;
(define (spara-personer [filnamn data-fil]) ;men i anrop kan du ge eget namn&lt;br /&gt;
  (with-output-to-file filnamn&lt;br /&gt;
    (λ () (write personer))&lt;br /&gt;
    #:exists &amp;#039;replace) ;om filen finns, skriv över den&lt;br /&gt;
  (printf &amp;quot;* Sparat ~a personer till \&amp;quot;~a\&amp;quot;\n&amp;quot;&lt;br /&gt;
          (length personer) filnamn))&lt;br /&gt;
&lt;br /&gt;
(define (ladda-personer [filnamn data-fil])&lt;br /&gt;
  (if (file-exists? filnamn)&lt;br /&gt;
      (begin&lt;br /&gt;
        (set! personer (with-input-from-file filnamn read))&lt;br /&gt;
        (printf &amp;quot;* Laddat ~a personer från \&amp;quot;~a\&amp;quot;\n&amp;quot; (length personer) filnamn))&lt;br /&gt;
      (printf &amp;quot;! Filen \&amp;quot;~a\&amp;quot; finns inte.\n&amp;quot; filnamn)))&lt;br /&gt;
&lt;br /&gt;
;; Spara och ladda – CSV-format (för enkel redigering)&lt;br /&gt;
(require csv-writing csv-reading)&lt;br /&gt;
(define csv-fil &amp;quot;personer.csv&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;; Hjälpfunktion: person → CSV-rad&lt;br /&gt;
(define (person-&amp;gt;csv-row person)&lt;br /&gt;
  (list (format &amp;quot;~a&amp;quot; (cdr (assoc &amp;#039;förnamn person)))&lt;br /&gt;
        (format &amp;quot;~a&amp;quot; (cdr (assoc &amp;#039;efternamn person)))&lt;br /&gt;
        (format &amp;quot;~a&amp;quot; (cdr (assoc &amp;#039;ålder person)))&lt;br /&gt;
        (format &amp;quot;~a&amp;quot; (cdr (assoc &amp;#039;stad person)))&lt;br /&gt;
        (format &amp;quot;~a&amp;quot; (cdr (assoc &amp;#039;telefon person)))))&lt;br /&gt;
&lt;br /&gt;
;; SPARA till CSV&lt;br /&gt;
(define (spara-personer-csv [filnamn csv-fil])&lt;br /&gt;
  (define rubriker (list (list &amp;quot;Förnamn&amp;quot; &amp;quot;Efternamn&amp;quot; &amp;quot;Ålder&amp;quot; &amp;quot;Stad&amp;quot; &amp;quot;Telefon&amp;quot;)))&lt;br /&gt;
  (define rader (map person-&amp;gt;csv-row (reverse personer)))   ; reverse så ordningen blir &amp;quot;naturlig&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  (with-output-to-file filnamn #:exists &amp;#039;replace&lt;br /&gt;
    (λ ()&lt;br /&gt;
      (display-table rubriker)&lt;br /&gt;
      (display-table rader)))&lt;br /&gt;
  &lt;br /&gt;
  (printf &amp;quot;* Sparat ~a personer till CSV-filen \&amp;quot;~a\&amp;quot;\n&amp;quot; (length personer) filnamn))&lt;br /&gt;
&lt;br /&gt;
;; LADDA från CSV&lt;br /&gt;
(define (ladda-personer-csv [filnamn csv-fil])&lt;br /&gt;
  (if (file-exists? filnamn)&lt;br /&gt;
      (let* ([reader (make-csv-reader (open-input-file filnamn))]&lt;br /&gt;
             [all-rows (csv-&amp;gt;list reader)] ;konvertera från csv till Lisp lista&lt;br /&gt;
             [data-rows (if (empty? all-rows) &amp;#039;() (rest all-rows))]) ; hoppa över rubrik-rad&lt;br /&gt;
&lt;br /&gt;
        (define nya-personer&lt;br /&gt;
          (for/list ([row data-rows])&lt;br /&gt;
            (list (cons &amp;#039;förnamn (list-ref row 0))&lt;br /&gt;
                  (cons &amp;#039;efternamn (list-ref row 1))&lt;br /&gt;
                  (cons &amp;#039;ålder (list-ref row 2))        ; behåll som sträng eller konvertera &lt;br /&gt;
                  (cons &amp;#039;stad (list-ref row 3))         ; med string-&amp;gt;number om du vill&lt;br /&gt;
                  (cons &amp;#039;telefon (list-ref row 4)))))&lt;br /&gt;
&lt;br /&gt;
        (set! personer (append nya-personer personer))  ; eller (set! personer nya-personer) om du vill ersätta&lt;br /&gt;
        (printf &amp;quot;* Laddat ~a personer från CSV-filen \&amp;quot;~a\&amp;quot;\n&amp;quot; (length nya-personer) filnamn))&lt;br /&gt;
      (printf &amp;quot;! CSV-filen \&amp;quot;~a\&amp;quot; finns inte.\n&amp;quot; filnamn)))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;; SORTERA PERSONER&lt;br /&gt;
;; Sorterar först på efternamn över hela listan&lt;br /&gt;
;; därefter på efternamn. Då blir det som det ska&lt;br /&gt;
(define (sortera-personer)&lt;br /&gt;
  ;; Steg 1: Sortera på förnamn&lt;br /&gt;
  (set! personer&lt;br /&gt;
        (sort personer&lt;br /&gt;
              (λ (p1 p2)&lt;br /&gt;
                (string-ci&amp;lt;? (cdr (assoc &amp;#039;förnamn p1))        ;string-ci är &amp;quot;string case insensitive&amp;quot;&lt;br /&gt;
                             (cdr (assoc &amp;#039;förnamn p2))))))    &lt;br /&gt;
&lt;br /&gt;
  ;; Steg 2: Sortera på efternamn (detta blir den slutgiltiga ordningen)&lt;br /&gt;
  (set! personer&lt;br /&gt;
        (sort personer&lt;br /&gt;
              (λ (p1 p2)&lt;br /&gt;
                (string-ci&amp;lt;? (cdr (assoc &amp;#039;efternamn p1))&lt;br /&gt;
                             (cdr (assoc &amp;#039;efternamn p2))))))&lt;br /&gt;
&lt;br /&gt;
  personer)   ; returnerar den sorterade listan (bra för kedjad användning)&lt;br /&gt;
&lt;br /&gt;
;; ================================================================&lt;br /&gt;
;; Exempel på användning&lt;br /&gt;
;; ================================================================&lt;br /&gt;
&lt;br /&gt;
;; Skapa testpersoner, detta behöver vi bara göra en gång för sedan skrivs den till disk och&lt;br /&gt;
;; vi behöver därefter bara hämta den vid behov!&lt;br /&gt;
&lt;br /&gt;
(skapa-person #:förnamn &amp;quot;Anna&amp;quot;      #:efternamn &amp;quot;Andersson&amp;quot; #:ålder 34  #:stad &amp;quot;Stockholm&amp;quot; #:telefon &amp;quot;070-123 45 67&amp;quot;)&lt;br /&gt;
(skapa-person #:förnamn &amp;quot;Rickard&amp;quot;   #:efternamn &amp;quot;Nilsson&amp;quot;   #:ålder 28  #:stad &amp;quot;Kista&amp;quot;)&lt;br /&gt;
(skapa-person #:förnamn &amp;quot;Enar&amp;quot;      #:efternamn &amp;quot;Nilsson&amp;quot;   #:ålder &amp;quot;74&amp;quot; #:stad &amp;quot;Färjestaden&amp;quot;)&lt;br /&gt;
(skapa-person #:förnamn &amp;quot;Anna&amp;quot;      #:efternamn &amp;quot;Svensson&amp;quot;  #:ålder 45  #:stad &amp;quot;Malmö&amp;quot;)&lt;br /&gt;
(skapa-person #:förnamn &amp;quot;Johan&amp;quot;     #:efternamn &amp;quot;Larsson&amp;quot;   #:ålder 31  #:stad &amp;quot;Stockholm&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
(sortera-personer)&lt;br /&gt;
&lt;br /&gt;
(spara-personer-csv &amp;quot;personlista.csv&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
(displayln &amp;quot;=== Personer efter skapande ===&amp;quot;)&lt;br /&gt;
(pretty-print-persons (hitta-person))&lt;br /&gt;
&lt;br /&gt;
;; Spara både binärt och CSV&lt;br /&gt;
(displayln &amp;quot;\n=== Sparar till disk (både .dat och .csv) ===&amp;quot;)&lt;br /&gt;
(spara-personer &amp;quot;personlista.dat&amp;quot;)&lt;br /&gt;
(spara-personer-csv &amp;quot;personlista.csv&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;; Rensa minnet (simulerar omstart)&lt;br /&gt;
(set! personer &amp;#039;())&lt;br /&gt;
(displayln &amp;quot;\n=== Listan rensad ===&amp;quot;)&lt;br /&gt;
(pretty-print-persons (hitta-person))&lt;br /&gt;
&lt;br /&gt;
;; Ladda tillbaka&lt;br /&gt;
(displayln &amp;quot;\n=== Laddar från Lispdata ===&amp;quot;)&lt;br /&gt;
(ladda-personer &amp;quot;personlista.dat&amp;quot;)&lt;br /&gt;
(pretty-print-persons (hitta-person))&lt;br /&gt;
&lt;br /&gt;
(set! personer &amp;#039;()) ; Nolla listan igen&lt;br /&gt;
&lt;br /&gt;
(ladda-personer-csv &amp;quot;personlista.csv&amp;quot;)&lt;br /&gt;
(displayln &amp;quot;\n=== Personer efter laddning från CSV ===&amp;quot;)&lt;br /&gt;
(pretty-print-persons (hitta-person))&lt;br /&gt;
&lt;br /&gt;
;; Exempel på sökning efter laddning&lt;br /&gt;
(displayln &amp;quot;\n=== Sök efter laddning (förnamn anna) ===&amp;quot;)&lt;br /&gt;
(pretty-print-persons (hitta-person #:förnamn &amp;quot;anna&amp;quot;))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sun, 05 Apr 2026 12:59:23 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Personreg</comments>
		</item>
		<item>
			<title>Racket/Personreg</title>
			<link>http://wiki.sikvall.se/index.php/Racket/Personreg</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php/Racket/Personreg</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php/Anv%C3%A4ndare:Anders&quot; class=&quot;mw-userlink&quot; title=&quot;Användare:Anders&quot;&gt;&lt;bdi&gt;Anders&lt;/bdi&gt;&lt;/a&gt; raderade sidan &lt;a href=&quot;/index.php/Racket/Personreg&quot; title=&quot;Racket/Personreg&quot;&gt;Racket/Personreg&lt;/a&gt; Före radering: &amp;quot;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; Enkel personinfodatabas implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;  ;; Global lista som håller alla personer, just nu tom (define personer &amp;#039;())  ;; Skapa en person med namngivna parametrar (define (skapa-person          #:förnamn förnamn          #:efternamn efternamn          #:ålder ålder          #:stad [stad &amp;quot;&amp;quot;]           ;Valfria parametrar med defaultvärden          #:telefon [telefon &amp;quot;&amp;quot;])   (def...&amp;quot;&lt;/p&gt;
</description>
			<pubDate>Sun, 05 Apr 2026 12:59:16 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Personreg</comments>
		</item>
		<item>
			<title>Racket/Hexdump</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/Hexdump&amp;diff=1828&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/Hexdump&amp;diff=1828&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; Hexdump implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;  ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; SYNOPSIS ;;         racket hexdump.rkt [ OPTIONS ] filename ;; ;; OPTIONS ;;         -h                     Gives a short help text to the utility ;;         --bytes-per-line, -n   Determines how many bytes are decoded per line (default 16) ;;         --hex, -x              Show only hex dump ;;         --ascii, -a...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#lang racket&lt;br /&gt;
&lt;br /&gt;
;;;;;&lt;br /&gt;
;; Hexdump implementerad i Racket&lt;br /&gt;
;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se&lt;br /&gt;
;;;;;&lt;br /&gt;
&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;; SYNOPSIS&lt;br /&gt;
;;         racket hexdump.rkt [ OPTIONS ] filename&lt;br /&gt;
;;&lt;br /&gt;
;; OPTIONS&lt;br /&gt;
;;         -h                     Gives a short help text to the utility&lt;br /&gt;
;;         --bytes-per-line, -n   Determines how many bytes are decoded per line (default 16)&lt;br /&gt;
;;         --hex, -x              Show only hex dump&lt;br /&gt;
;;         --ascii, -a            Show only ASCII dump&lt;br /&gt;
&lt;br /&gt;
(require racket/cmdline)&lt;br /&gt;
&lt;br /&gt;
(define (hexdump-file filename &lt;br /&gt;
                      #:only-hex? [only-hex? #f]&lt;br /&gt;
                      #:only-ascii? [only-ascii? #f]&lt;br /&gt;
                      #:bytes-per-line [n 16])&lt;br /&gt;
  (printf &amp;quot;Läser fil: ~a (~a bytes)\n\n&amp;quot; filename (file-size filename))&lt;br /&gt;
  (call-with-input-file filename&lt;br /&gt;
    (λ (in)&lt;br /&gt;
      (let loop ([offset 0])&lt;br /&gt;
        (define chunk (read-bytes n in))&lt;br /&gt;
        (cond&lt;br /&gt;
          [(eof-object? chunk) (void)]&lt;br /&gt;
          [(bytes? chunk)&lt;br /&gt;
           (define len (bytes-length chunk))&lt;br /&gt;
           (printf &amp;quot;~a  &amp;quot; (~r offset #:base 16 #:min-width 8 #:pad-string &amp;quot;0&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
           (define show-both? (not (xor only-hex? only-ascii?)))&lt;br /&gt;
&lt;br /&gt;
           (cond&lt;br /&gt;
             [(and only-hex? (not show-both?))&lt;br /&gt;
              (for ([i (in-range n)])&lt;br /&gt;
                (printf &amp;quot;~a &amp;quot; (if (&amp;lt; i len)&lt;br /&gt;
                                  (~r (bytes-ref chunk i) #:base 16 #:min-width 2 #:pad-string &amp;quot;0&amp;quot;)&lt;br /&gt;
                                  &amp;quot;  &amp;quot;))&lt;br /&gt;
                (when (and (= (modulo (add1 i) 8) 0) (&amp;lt; i (sub1 n)))&lt;br /&gt;
                  (display &amp;quot; &amp;quot;)))&lt;br /&gt;
              (newline)]&lt;br /&gt;
&lt;br /&gt;
             [(and only-ascii? (not show-both?))&lt;br /&gt;
              (display &amp;quot;   |&amp;quot;)&lt;br /&gt;
              (for ([b (in-bytes chunk)]) (display (if (and (&amp;gt;= b 32) (&amp;lt;= b 126)) (integer-&amp;gt;char b) &amp;quot;.&amp;quot;)))&lt;br /&gt;
              (for ([_ (in-range (- n len))]) (display &amp;quot; &amp;quot;))&lt;br /&gt;
              (display &amp;quot;|\n&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
             [else  ; båda eller ingen flagga&lt;br /&gt;
              (for ([i (in-range n)])&lt;br /&gt;
                (printf &amp;quot;~a &amp;quot; (if (&amp;lt; i len)&lt;br /&gt;
                                  (~r (bytes-ref chunk i) #:base 16 #:min-width 2 #:pad-string &amp;quot;0&amp;quot;)&lt;br /&gt;
                                  &amp;quot;  &amp;quot;))&lt;br /&gt;
                (when (and (= (modulo (add1 i) 8) 0) (&amp;lt; i (sub1 n)))&lt;br /&gt;
                  (display &amp;quot; &amp;quot;)))&lt;br /&gt;
              (display &amp;quot;|&amp;quot;)&lt;br /&gt;
              (for ([b (in-bytes chunk)]) (display (if (and (&amp;gt;= b 32) (&amp;lt;= b 126)) (integer-&amp;gt;char b) &amp;quot;.&amp;quot;)))&lt;br /&gt;
              (for ([_ (in-range (- n len))]) (display &amp;quot; &amp;quot;))&lt;br /&gt;
              (display &amp;quot;|\n&amp;quot;)])&lt;br /&gt;
&lt;br /&gt;
           (loop (+ offset n))])))))&lt;br /&gt;
&lt;br /&gt;
(define-values (filename only-hex? only-ascii? bytes-per-line)&lt;br /&gt;
  (let ([only-hex? #f] [only-ascii? #f] [bytes-per-line 16])&lt;br /&gt;
    (command-line&lt;br /&gt;
     #:program &amp;quot;hexdump&amp;quot;&lt;br /&gt;
     #:usage-help &amp;quot;Användning: racket hexdump.rkt [alternativ] &amp;lt;fil&amp;gt;&amp;quot;&lt;br /&gt;
     #:once-each&lt;br /&gt;
     [(&amp;quot;-x&amp;quot; &amp;quot;--hex&amp;quot;)   &amp;quot;Visa endast hex-delen&amp;quot;  (set! only-hex? #t)]&lt;br /&gt;
     [(&amp;quot;-a&amp;quot; &amp;quot;--ascii&amp;quot;) &amp;quot;Visa endast ASCII-delen&amp;quot; (set! only-ascii? #t)]&lt;br /&gt;
     [(&amp;quot;-n&amp;quot; &amp;quot;--bytes-per-line&amp;quot;) n&lt;br /&gt;
      &amp;quot;Antal bytes per rad (standard: 16)&amp;quot; (let ([num (string-&amp;gt;number n)]) (when num (set! bytes-per-line num)))]&lt;br /&gt;
     #:args (filename)&lt;br /&gt;
     (values filename only-hex? only-ascii? bytes-per-line))))&lt;br /&gt;
&lt;br /&gt;
(if (not (file-exists? filename))&lt;br /&gt;
    (printf &amp;quot;Fel: Filen \&amp;quot;~a\&amp;quot; finns inte.\n&amp;quot; filename)&lt;br /&gt;
    (hexdump-file filename &lt;br /&gt;
                  #:only-hex? only-hex?&lt;br /&gt;
                  #:only-ascii? only-ascii?&lt;br /&gt;
                  #:bytes-per-line bytes-per-line))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sun, 05 Apr 2026 12:58:53 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Hexdump</comments>
		</item>
		<item>
			<title>Racket/Hexdump</title>
			<link>http://wiki.sikvall.se/index.php/Racket/Hexdump</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php/Racket/Hexdump</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php/Anv%C3%A4ndare:Anders&quot; class=&quot;mw-userlink&quot; title=&quot;Användare:Anders&quot;&gt;&lt;bdi&gt;Anders&lt;/bdi&gt;&lt;/a&gt; raderade sidan &lt;a href=&quot;/index.php/Racket/Hexdump&quot; title=&quot;Racket/Hexdump&quot;&gt;Racket/Hexdump&lt;/a&gt; Före radering: &amp;quot;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; Hexdump implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;  ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; SYNOPSIS ;;         racket hexdump.rkt [ OPTIONS ] filename ;; ;; OPTIONS ;;         -h                     Gives a short help text to the utility ;;         --bytes-per-line, -n   Determines how many bytes are decoded per line (default 16) ;;         --hex, -x              Show only hex dump ;;         --ascii, -a            S...&amp;quot;&lt;/p&gt;
</description>
			<pubDate>Sun, 05 Apr 2026 12:58:45 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Hexdump</comments>
		</item>
		<item>
			<title>Racket/Erastothenes</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/Erastothenes&amp;diff=1827&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/Erastothenes&amp;diff=1827&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; Erastothenes såll implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;  (define (primes-between start stop)   (cond     [(&amp;gt; start stop) &amp;#039;()]     [else      ; Skapa en bool-vektor för intervallet [0..stop]      (define sieve (make-vector (+ stop 1) #t))            ; 0 och 1 är inte primtal      (vector-set! sieve 0 #f)      (vector-set! sieve 1 #f)            ; Såll: markera multiplar      ; Går från 2 till (...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#lang racket&lt;br /&gt;
&lt;br /&gt;
;;;;;&lt;br /&gt;
;; Erastothenes såll implementerad i Racket&lt;br /&gt;
;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se&lt;br /&gt;
;;;;;&lt;br /&gt;
&lt;br /&gt;
(define (primes-between start stop)&lt;br /&gt;
  (cond&lt;br /&gt;
    [(&amp;gt; start stop) &amp;#039;()]&lt;br /&gt;
    [else&lt;br /&gt;
     ; Skapa en bool-vektor för intervallet [0..stop]&lt;br /&gt;
     (define sieve (make-vector (+ stop 1) #t))&lt;br /&gt;
     &lt;br /&gt;
     ; 0 och 1 är inte primtal&lt;br /&gt;
     (vector-set! sieve 0 #f)&lt;br /&gt;
     (vector-set! sieve 1 #f)&lt;br /&gt;
     &lt;br /&gt;
     ; Såll: markera multiplar&lt;br /&gt;
     ; Går från 2 till (roten ur stop) +1&lt;br /&gt;
     ; inre vektorn går från i^2 till stop med steglängden i&lt;br /&gt;
     ; och markerar multiplarna av i genom hela vektorfältet&lt;br /&gt;
     (for ([i (in-range 2 (add1 (integer-sqrt stop)))])&lt;br /&gt;
       (when (vector-ref sieve i)&lt;br /&gt;
         (for ([j (in-range (* i i) (add1 stop) i)])&lt;br /&gt;
           (vector-set! sieve j #f))))&lt;br /&gt;
     &lt;br /&gt;
     ; Samla ihop primtal i intervallet [start, stop]&lt;br /&gt;
     (for/list ([i (in-range (max start 2) (add1 stop))]&lt;br /&gt;
                #:when (vector-ref sieve i))&lt;br /&gt;
       i)]))&lt;br /&gt;
&lt;br /&gt;
; Exempel på användning:&lt;br /&gt;
(primes-between 100000 200000)   ; funkar snabbt även för stora tal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sun, 05 Apr 2026 12:57:37 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Erastothenes</comments>
		</item>
		<item>
			<title>Racket/Erastothenes</title>
			<link>http://wiki.sikvall.se/index.php/Racket/Erastothenes</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php/Racket/Erastothenes</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php/Anv%C3%A4ndare:Anders&quot; class=&quot;mw-userlink&quot; title=&quot;Användare:Anders&quot;&gt;&lt;bdi&gt;Anders&lt;/bdi&gt;&lt;/a&gt; raderade sidan &lt;a href=&quot;/index.php/Racket/Erastothenes&quot; title=&quot;Racket/Erastothenes&quot;&gt;Racket/Erastothenes&lt;/a&gt; Författarens begäran: Före radering: &amp;quot;&amp;lt;pre&amp;gt; #lang racket  ;;;;; ;; Erastothenes såll implementerad i Racket ;; Täpp-Anders Sikvall 2026-04-03 anders@sikvall.se ;;;;;  (define (primes-between start stop)   (cond     [(&amp;gt; start stop) &amp;#039;()]     [else      ; Skapa en bool-vektor för intervallet [0..stop]      (define sieve (make-vector (+ stop 1) #t))            ; 0 och 1 är inte primtal      (vector-set! sieve 0 #f)      (vector-set! sieve 1 #f)            ; Såll: markera multiplar      ; Går från...&lt;/p&gt;
</description>
			<pubDate>Sun, 05 Apr 2026 12:57:25 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Erastothenes</comments>
		</item>
		<item>
			<title>Racket/Multitråd</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/Multitr%C3%A5d&amp;diff=1826&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/Multitr%C3%A5d&amp;diff=1826&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt;#lang racket   ;;;;; ;; Multitrådad demo ;; Täpp-Anders Sikvall, anders@sikvall.se, 2006-04-04 ;; Racketkurs.  ;; Simulerar tidsödande arbete genom att pausa tråden en slumpmässig tid (define (random-sleep min-sec max-sec)   (sleep (+ min-sec (* (random) (- max-sec min-sec)))))  ;; En arbetare körs i en egen tråd och lyssnar på work-channel (define (start-worker id work-channel result-channel)   (thread    (λ ()      (let loop ()        ;; Vänta på att f...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;#lang racket&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;;;;;&lt;br /&gt;
;; Multitrådad demo&lt;br /&gt;
;; Täpp-Anders Sikvall, anders@sikvall.se, 2006-04-04&lt;br /&gt;
;; Racketkurs.&lt;br /&gt;
&lt;br /&gt;
;; Simulerar tidsödande arbete genom att pausa tråden en slumpmässig tid&lt;br /&gt;
(define (random-sleep min-sec max-sec)&lt;br /&gt;
  (sleep (+ min-sec (* (random) (- max-sec min-sec)))))&lt;br /&gt;
&lt;br /&gt;
;; En arbetare körs i en egen tråd och lyssnar på work-channel&lt;br /&gt;
(define (start-worker id work-channel result-channel)&lt;br /&gt;
  (thread&lt;br /&gt;
   (λ ()&lt;br /&gt;
     (let loop ()&lt;br /&gt;
       ;; Vänta på att få ett meddelande från arbetskön&lt;br /&gt;
       (match (channel-get work-channel)&lt;br /&gt;
         ;; Om meddelandet är &amp;#039;done&amp;#039;, avsluta loopen och därmed tråden&lt;br /&gt;
         [&amp;#039;done&lt;br /&gt;
          (printf &amp;quot;Arbetare ~a: Avslutar.\n&amp;quot; id)]&lt;br /&gt;
         &lt;br /&gt;
         ;; Om meddelandet är ett tal, utför beräkningen&lt;br /&gt;
         [n&lt;br /&gt;
          (printf &amp;quot;Arbetare ~a: Bearbetar värde ~a...\n&amp;quot; id n)&lt;br /&gt;
          (random-sleep 0.1 0.4)&lt;br /&gt;
          &lt;br /&gt;
          ;; Skicka tillbaka resultatet. &lt;br /&gt;
          ;; OBS: Detta blockerar arbetaren tills huvudtråden läser från result-channel.&lt;br /&gt;
          (channel-put result-channel (list id (* n n)))&lt;br /&gt;
          (loop)])))))&lt;br /&gt;
&lt;br /&gt;
;; --- Huvudprogram ---&lt;br /&gt;
&lt;br /&gt;
(define (main)&lt;br /&gt;
  (define num-workers 4)&lt;br /&gt;
  (define num-tasks   10)&lt;br /&gt;
&lt;br /&gt;
  ;; Skapa kanaler för kommunikation&lt;br /&gt;
  ;; Dessa är synkrona (blockerande) i Racket&lt;br /&gt;
  (define work-channel   (make-channel))&lt;br /&gt;
  (define result-channel (make-channel))&lt;br /&gt;
&lt;br /&gt;
  (printf &amp;quot;System: Startar ~a arbetstrådar.\n&amp;quot; num-workers)&lt;br /&gt;
  &lt;br /&gt;
  ;; Starta arbetartrådarna och spara deras referenser i en lista&lt;br /&gt;
  (define workers&lt;br /&gt;
    (for/list ([i (in-range num-workers)])&lt;br /&gt;
      (start-worker i work-channel result-channel)))&lt;br /&gt;
&lt;br /&gt;
  ;; 1. Skicka uppgifter till arbetskön.&lt;br /&gt;
  ;; Vi gör detta i en separat tråd för att säkerställa att huvudtråden &lt;br /&gt;
  ;; kan börja tömma resultat-kanalen omedelbart.&lt;br /&gt;
  (thread&lt;br /&gt;
   (λ ()&lt;br /&gt;
     (for ([task (in-range 1 (add1 num-tasks))])&lt;br /&gt;
       (channel-put work-channel task))&lt;br /&gt;
     &lt;br /&gt;
     ;; Skicka en &amp;#039;done&amp;#039;-signal per arbetare för att stänga ner dem snyggt&lt;br /&gt;
     (for ([_ (in-range num-workers)])&lt;br /&gt;
       (channel-put work-channel &amp;#039;done))))&lt;br /&gt;
&lt;br /&gt;
  ;; Samla in resultaten.&lt;br /&gt;
  (printf &amp;quot;System: Samlar in resultat.\n&amp;quot;)&lt;br /&gt;
  (for ([_ (in-range num-tasks)])&lt;br /&gt;
    (match (channel-get result-channel)&lt;br /&gt;
      [(list id result)&lt;br /&gt;
       (printf &amp;quot;Resultat: Arbetare ~a levererade ~a\n&amp;quot; id result)]))&lt;br /&gt;
&lt;br /&gt;
  ;; Vänta på att trådarna faktiskt har stängt ner.&lt;br /&gt;
  (printf &amp;quot;System: Väntar på att trådar stängs ner...\n&amp;quot;)&lt;br /&gt;
  (for-each thread-wait workers)&lt;br /&gt;
&lt;br /&gt;
  (printf &amp;quot;System: Programmet är klart.\n&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
;; Kör programmet&lt;br /&gt;
(main)&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sun, 05 Apr 2026 12:55:47 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Multitr%C3%A5d</comments>
		</item>
		<item>
			<title>Racket/Multitråd</title>
			<link>http://wiki.sikvall.se/index.php/Racket/Multitr%C3%A5d</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php/Racket/Multitr%C3%A5d</guid>
			<description>&lt;p&gt;&lt;a href=&quot;/index.php/Anv%C3%A4ndare:Anders&quot; class=&quot;mw-userlink&quot; title=&quot;Användare:Anders&quot;&gt;&lt;bdi&gt;Anders&lt;/bdi&gt;&lt;/a&gt; raderade sidan &lt;a href=&quot;/index.php/Racket/Multitr%C3%A5d&quot; title=&quot;Racket/Multitråd&quot;&gt;Racket/Multitråd&lt;/a&gt; innehållet var: &amp;quot;&amp;lt;pre&amp;gt;#lang racket   ;;;;; ;; Multitrådad demo ;; Täpp-Anders Sikvall, anders@sikvall.se, 2006-04-04 ;; Racketkurs.  ;; Simulerar tidsödande arbete genom att pausa tråden en slumpmässig tid (define (random-sleep min-sec max-sec)   (sleep (+ min-sec (* (random) (- max-sec min-sec)))))  ;; En arbetare körs i en egen tråd och lyssnar på work-channel (define (start-worke...&amp;quot;, den enda som skrivit var &amp;quot;&lt;a href=&quot;/index.php/Special:Bidrag/Anders&quot; title=&quot;Special:Bidrag/Anders&quot;&gt;Anders&lt;/a&gt;&amp;quot; (&lt;a href=&quot;/index.php?title=Anv%C3%A4ndardiskussion:Anders&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Användardiskussion:Anders (sidan existerar inte)&quot;&gt;diskussion&lt;/a&gt;)&lt;/p&gt;
</description>
			<pubDate>Sun, 05 Apr 2026 12:55:33 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/Multitr%C3%A5d</comments>
		</item>
		<item>
			<title>Racket</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1822&amp;oldid=1818</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1822&amp;oldid=1818</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Kodexempel (Sommarhack 2026)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 5 april 2026 kl. 12.35&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-multi&quot; lang=&quot;sv&quot;&gt;(En mellanliggande sidversion av samma användare visas inte)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Rad 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Kodexempel (Sommarhack 2026) =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Kodexempel (Sommarhack 2026) =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;[[Racket/Erastothenes]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;[[Racket/Erastothenes]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;[[Racket/Personreg]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# [[Racket/Hexdump]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;[[Racket/Lille-GUI]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;[[Racket/Personreg]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;[[Racket/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Hexdump&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;[[Racket/Lille-GUI]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;[[Racket/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Genetic&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;[[Racket/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Multitråd&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;[[Racket/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Neural&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;[[Racket/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;6502-emu&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;[[Racket/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Posits&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;[[Racket/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Genetic&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;[[Racket/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;6502-emu&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;[[Racket/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Neural&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/ins&gt;[[Racket/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Posits&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 05 Apr 2026 12:35:35 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket</comments>
		</item>
</channel></rss>