<?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>Fri, 10 Apr 2026 12:56:06 GMT</lastBuildDate>
		<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=1814</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1822&amp;oldid=1814</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;(2 mellanliggande sidversioner 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/Genetic]]&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/Neural]]&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/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/Posits]]&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/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;# &lt;/ins&gt;[[Racket/Neural]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; 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/Posits]]&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>
		<item>
			<title>Racket/6502-emu</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket/6502-emu&amp;diff=1817&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket/6502-emu&amp;diff=1817&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;&amp;lt;pre&amp;gt; #lang racket  ;; ================================================ ;; Enkel 6502-emulator skriven i Racket ;; ================================================ ;; Detta är en grundläggande men fullt fungerande emulator för 6502-processorn. ;; Den hanterar minne (64 KB), register, stack, flaggor och ett grundläggande ;; set av instruktioner. Du kan lätt utöka den med fler opkoder. ;; ;; Instruktioner som stöds i denna version (kan utökas i cpu-step): ;;   - $0...&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 6502-emulator skriven i Racket&lt;br /&gt;
;; ================================================&lt;br /&gt;
;; Detta är en grundläggande men fullt fungerande emulator för 6502-processorn.&lt;br /&gt;
;; Den hanterar minne (64 KB), register, stack, flaggor och ett grundläggande&lt;br /&gt;
;; set av instruktioner. Du kan lätt utöka den med fler opkoder.&lt;br /&gt;
;;&lt;br /&gt;
;; Instruktioner som stöds i denna version (kan utökas i cpu-step):&lt;br /&gt;
;;   - $00 BRK          (stoppar exekveringen)&lt;br /&gt;
;;   - $A9 LDA #imm&lt;br /&gt;
;;   - $8D STA abs&lt;br /&gt;
;;   - $A2 LDX #imm&lt;br /&gt;
;;   - $E8 INX&lt;br /&gt;
;;   - $4C JMP abs&lt;br /&gt;
;;   - $D0 BNE rel      (enkel branch)&lt;br /&gt;
;;&lt;br /&gt;
;; NYTT: Funktioner för att skriva ut minne och flaggor har lagts till!&lt;br /&gt;
&lt;br /&gt;
(struct cpu (a x y pc sp p mem) #:mutable #:transparent)&lt;br /&gt;
&lt;br /&gt;
;; Flaggor (statusregister P)&lt;br /&gt;
(define CARRY      #b00000001)&lt;br /&gt;
(define ZERO       #b00000010)&lt;br /&gt;
(define INTERRUPT  #b00000100)&lt;br /&gt;
(define DECIMAL    #b00001000)&lt;br /&gt;
(define BREAK      #b00010000)&lt;br /&gt;
(define OVERFLOW   #b01000000)&lt;br /&gt;
(define NEGATIVE   #b10000000)&lt;br /&gt;
&lt;br /&gt;
;; Skapa en ny CPU (PC startar godtyckligt, SP pekar mot stack-sidan)&lt;br /&gt;
(define (make-cpu)&lt;br /&gt;
  (cpu 0 0 0 #x8000 #xFF #b00100100 (make-vector 65536 0)))&lt;br /&gt;
&lt;br /&gt;
;; Minnesåtkomst&lt;br /&gt;
(define (mem-read cpu addr)&lt;br /&gt;
  (vector-ref (cpu-mem cpu) (bitwise-and addr #xFFFF)))&lt;br /&gt;
&lt;br /&gt;
(define (mem-write cpu addr val)&lt;br /&gt;
  (vector-set! (cpu-mem cpu) (bitwise-and addr #xFFFF) (bitwise-and val #xFF)))&lt;br /&gt;
&lt;br /&gt;
;; Stack (6502-stack ligger på sidan 0x01)&lt;br /&gt;
(define (stack-push cpu val)&lt;br /&gt;
  (mem-write cpu (cpu-sp cpu) val)&lt;br /&gt;
  (set-cpu-sp! cpu (bitwise-and #xFF (- (cpu-sp cpu) 1))))&lt;br /&gt;
&lt;br /&gt;
(define (stack-pop cpu)&lt;br /&gt;
  (set-cpu-sp! cpu (bitwise-and #xFF (+ (cpu-sp cpu) 1)))&lt;br /&gt;
  (mem-read cpu (cpu-sp cpu)))&lt;br /&gt;
&lt;br /&gt;
;; Uppdatera N- och Z-flaggor (används av de flesta instruktioner)&lt;br /&gt;
(define (update-nz cpu val)&lt;br /&gt;
  (set-flag cpu NEGATIVE (not (zero? (bitwise-and val #x80))))&lt;br /&gt;
  (set-flag cpu ZERO      (zero? (bitwise-and val #xFF))))&lt;br /&gt;
&lt;br /&gt;
(define (set-flag cpu mask val)&lt;br /&gt;
  (if val&lt;br /&gt;
      (set-cpu-p! cpu (bitwise-ior (cpu-p cpu) mask))&lt;br /&gt;
      (set-cpu-p! cpu (bitwise-and (cpu-p cpu) (bitwise-not mask)))))&lt;br /&gt;
&lt;br /&gt;
(define (get-flag cpu mask)&lt;br /&gt;
  (not (zero? (bitwise-and (cpu-p cpu) mask))))&lt;br /&gt;
&lt;br /&gt;
;; Hjälpfunktioner för att hämta data och öka PC&lt;br /&gt;
(define (fetch-byte cpu)&lt;br /&gt;
  (define addr (cpu-pc cpu))&lt;br /&gt;
  (set-cpu-pc! cpu (add1 addr))&lt;br /&gt;
  (mem-read cpu addr))&lt;br /&gt;
&lt;br /&gt;
(define (fetch-word cpu)&lt;br /&gt;
  (define lo (fetch-byte cpu))&lt;br /&gt;
  (define hi (fetch-byte cpu))&lt;br /&gt;
  (bitwise-ior lo (arithmetic-shift hi 8)))&lt;br /&gt;
&lt;br /&gt;
;; Huvudfunktion: exekvera en instruktion&lt;br /&gt;
(define (cpu-step cpu)&lt;br /&gt;
  (define opcode (fetch-byte cpu))&lt;br /&gt;
  (case opcode&lt;br /&gt;
    ;; BRK – stoppar emulatorn&lt;br /&gt;
    [(#x00)&lt;br /&gt;
     (set-flag cpu BREAK #t)&lt;br /&gt;
     &amp;#039;brk]&lt;br /&gt;
&lt;br /&gt;
    ;; LDA #imm&lt;br /&gt;
    [(#xA9)&lt;br /&gt;
     (define val (fetch-byte cpu))&lt;br /&gt;
     (set-cpu-a! cpu val)&lt;br /&gt;
     (update-nz cpu val)]&lt;br /&gt;
&lt;br /&gt;
    ;; STA abs&lt;br /&gt;
    [(#x8D)&lt;br /&gt;
     (define addr (fetch-word cpu))&lt;br /&gt;
     (mem-write cpu addr (cpu-a cpu))]&lt;br /&gt;
&lt;br /&gt;
    ;; LDX #imm&lt;br /&gt;
    [(#xA2)&lt;br /&gt;
     (define val (fetch-byte cpu))&lt;br /&gt;
     (set-cpu-x! cpu val)&lt;br /&gt;
     (update-nz cpu val)]&lt;br /&gt;
&lt;br /&gt;
    ;; INX&lt;br /&gt;
    [(#xE8)&lt;br /&gt;
     (define new-x (bitwise-and #xFF (add1 (cpu-x cpu))))&lt;br /&gt;
     (set-cpu-x! cpu new-x)&lt;br /&gt;
     (update-nz cpu new-x)]&lt;br /&gt;
&lt;br /&gt;
    ;; JMP abs&lt;br /&gt;
    [(#x4C)&lt;br /&gt;
     (define addr (fetch-word cpu))&lt;br /&gt;
     (set-cpu-pc! cpu addr)]&lt;br /&gt;
&lt;br /&gt;
    ;; BNE rel (branch if not equal / Z=0)&lt;br /&gt;
    [(#xD0)&lt;br /&gt;
     (define offset (fetch-byte cpu))&lt;br /&gt;
     (when (not (get-flag cpu ZERO))&lt;br /&gt;
       (set-cpu-pc! cpu (+ (cpu-pc cpu)&lt;br /&gt;
                           (if (&amp;gt; offset #x7F) (- offset #x100) offset))))]&lt;br /&gt;
&lt;br /&gt;
    [else&lt;br /&gt;
     (error &amp;quot;Okänt opcode:&amp;quot; (format &amp;quot;~x&amp;quot; opcode))]))&lt;br /&gt;
&lt;br /&gt;
;; Ladda ett program (lista av bytes) till minnet&lt;br /&gt;
(define (load-program cpu start-addr program-bytes)&lt;br /&gt;
  (for ([b program-bytes]&lt;br /&gt;
        [i (in-naturals)])&lt;br /&gt;
    (mem-write cpu (+ start-addr i) b)))&lt;br /&gt;
&lt;br /&gt;
;; Kör emulatorn tills BRK eller max-steg nås&lt;br /&gt;
(define (run-cpu cpu [max-steps 100000])&lt;br /&gt;
  (let loop ([steps 0])&lt;br /&gt;
    (cond&lt;br /&gt;
      [(&amp;gt;= steps max-steps) &amp;#039;timeout]&lt;br /&gt;
      [else&lt;br /&gt;
       (define result (cpu-step cpu))&lt;br /&gt;
       (if (eq? result &amp;#039;brk)&lt;br /&gt;
           &amp;#039;halted-by-brk&lt;br /&gt;
           (loop (add1 steps)))])))&lt;br /&gt;
&lt;br /&gt;
;; ================================================&lt;br /&gt;
;; NYA HJÄLPFUNKTIONER: Skriv ut minne och flaggor&lt;br /&gt;
;; ================================================&lt;br /&gt;
&lt;br /&gt;
;; Skriver ut aktuellt CPU-tillstånd (alla register + flaggor i läsbart format)&lt;br /&gt;
(define (print-cpu-state cpu)&lt;br /&gt;
  (printf &amp;quot;=== CPU STATUS ===~n&amp;quot;)&lt;br /&gt;
  (printf &amp;quot;PC: $~x   A: $~x   X: $~x   Y: $~x   SP: $~x~n&amp;quot;&lt;br /&gt;
          (cpu-pc cpu)&lt;br /&gt;
          (cpu-a cpu)&lt;br /&gt;
          (cpu-x cpu)&lt;br /&gt;
          (cpu-y cpu)&lt;br /&gt;
          (cpu-sp cpu))&lt;br /&gt;
  (printf &amp;quot;P:  $~x   &amp;quot; (cpu-p cpu))&lt;br /&gt;
  (printf &amp;quot;Flags: [N:~a V:~a - B:~a D:~a I:~a Z:~a C:~a]~n&amp;quot;&lt;br /&gt;
          (if (get-flag cpu NEGATIVE) &amp;quot;1&amp;quot; &amp;quot;0&amp;quot;)&lt;br /&gt;
          (if (get-flag cpu OVERFLOW) &amp;quot;1&amp;quot; &amp;quot;0&amp;quot;)&lt;br /&gt;
          (if (get-flag cpu BREAK)    &amp;quot;1&amp;quot; &amp;quot;0&amp;quot;)&lt;br /&gt;
          (if (get-flag cpu DECIMAL)  &amp;quot;1&amp;quot; &amp;quot;0&amp;quot;)&lt;br /&gt;
          (if (get-flag cpu INTERRUPT)&amp;quot;1&amp;quot; &amp;quot;0&amp;quot;)&lt;br /&gt;
          (if (get-flag cpu ZERO)     &amp;quot;1&amp;quot; &amp;quot;0&amp;quot;)&lt;br /&gt;
          (if (get-flag cpu CARRY)    &amp;quot;1&amp;quot; &amp;quot;0&amp;quot;))&lt;br /&gt;
  (newline))&lt;br /&gt;
&lt;br /&gt;
;; Hex-dump av ett minnesområde (16 bytes per rad + ASCII-del)&lt;br /&gt;
;; Användning: (print-memory my-cpu #x0000 #x00FF) eller bara (print-memory my-cpu #x0600)&lt;br /&gt;
(define (print-memory cpu start [end #f])&lt;br /&gt;
  (when (not end)&lt;br /&gt;
    (set! end (+ start 255)))                 ; default: 256 bytes om inget slut anges&lt;br /&gt;
  (set! start (bitwise-and start #xFFFF))&lt;br /&gt;
  (set! end   (bitwise-and end   #xFFFF))&lt;br /&gt;
  (printf &amp;quot;=== MEMORY DUMP $~4x – $~4x ===~n&amp;quot; start end)&lt;br /&gt;
  (for ([addr (in-range start (add1 end) 16)])&lt;br /&gt;
    (when (&amp;lt;= addr end)&lt;br /&gt;
      (printf &amp;quot;$~4x: &amp;quot; addr)&lt;br /&gt;
      ;; Hex-delen&lt;br /&gt;
      (for ([i (in-range 16)])&lt;br /&gt;
        (define a (+ addr i))&lt;br /&gt;
        (if (&amp;lt;= a end)&lt;br /&gt;
            (printf &amp;quot;~2x &amp;quot; (mem-read cpu a))&lt;br /&gt;
            (printf &amp;quot;   &amp;quot;)))&lt;br /&gt;
      ;; ASCII-del&lt;br /&gt;
      (printf &amp;quot; | &amp;quot;)&lt;br /&gt;
      (for ([i (in-range 16)])&lt;br /&gt;
        (define a (+ addr i))&lt;br /&gt;
        (if (&amp;lt;= a end)&lt;br /&gt;
            (let ([b (mem-read cpu a)])&lt;br /&gt;
              (printf &amp;quot;~a&amp;quot; (if (and (&amp;gt;= b #x20) (&amp;lt;= b #x7E))&lt;br /&gt;
                               (integer-&amp;gt;char b)&lt;br /&gt;
                               &amp;quot;.&amp;quot;)))&lt;br /&gt;
            (printf &amp;quot; &amp;quot;)))&lt;br /&gt;
      (newline)))&lt;br /&gt;
  (newline))&lt;br /&gt;
&lt;br /&gt;
;; ================================================&lt;br /&gt;
;; EXEMPEL: Ett litet program som demonstrerar emulatorn&lt;br /&gt;
;; ================================================&lt;br /&gt;
;; Programmet gör följande:&lt;br /&gt;
;;   LDA #$05      ; A = 5&lt;br /&gt;
;;   STA $0010     ; minne[0x0010] = 5&lt;br /&gt;
;;   LDX #$0A      ; X = 10&lt;br /&gt;
;;   INX           ; X = 11&lt;br /&gt;
;;   JMP $0610     ; hoppa till en BRK&lt;br /&gt;
;;   BRK&lt;br /&gt;
&lt;br /&gt;
(define example-program&lt;br /&gt;
  (list #xA9 #x05          ; LDA #5&lt;br /&gt;
        #x8D #x10 #x00     ; STA $0010&lt;br /&gt;
        #xA2 #x0A          ; LDX #10&lt;br /&gt;
        #xE8               ; INX&lt;br /&gt;
        #x4C #x10 #x06     ; JMP $0610&lt;br /&gt;
        #x00))             ; BRK (vid 0x0610)&lt;br /&gt;
&lt;br /&gt;
;; Hur du kör exemplet (med de nya utskriftsfunktionerna):&lt;br /&gt;
&lt;br /&gt;
(define my-cpu (make-cpu))&lt;br /&gt;
(load-program my-cpu #x0600 example-program)&lt;br /&gt;
(print-cpu-state my-cpu)&lt;br /&gt;
(set-cpu-pc! my-cpu #x0600)&lt;br /&gt;
(print-cpu-state my-cpu)&lt;br /&gt;
(run-cpu my-cpu)&lt;br /&gt;
(print-cpu-state my-cpu)&lt;br /&gt;
&lt;br /&gt;
;; Flera opkoder kan läggas till för bättre emulering!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sun, 05 Apr 2026 02:52:01 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket/6502-emu</comments>
		</item>
		<item>
			<title>Racket</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1814&amp;oldid=1793</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1814&amp;oldid=1793</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 4 april 2026 kl. 17.25&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;(3 mellanliggande sidversioner 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-l10&quot;&gt;Rad 10:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 10:&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;Kör igång det inbyggda IDE:t med &amp;quot;drracket&amp;quot; antingen från applikationsmenyn eller terminalen.&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;Kör igång det inbyggda IDE:t med &amp;quot;drracket&amp;quot; antingen från applikationsmenyn eller terminalen.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; 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;= Kodexempel (Sommarhack 2026) =&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;* [[Racket/Erastothenes]]&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/Personreg]]&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/Lille-GUI]]&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/Hexdump]]&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/Genetic]]&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/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;* [[Racket/Posits]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Sat, 04 Apr 2026 17:25:19 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket</comments>
		</item>
		<item>
			<title>Racket</title>
			<link>http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1793&amp;oldid=0</link>
			<guid isPermaLink="false">http://wiki.sikvall.se/index.php?title=Racket&amp;diff=1793&amp;oldid=0</guid>
			<description>&lt;p&gt;Skapade sidan med &amp;#039;Racket är ett programmeringsspråk i Lispfamiljen och underfamilj till Scheme. Det är kompatibelt med Scheme R5RS och andra varianter men har också ett eget väl utbyggt bibliotek av funktioner och rutiner och kanske en av de enklaste språken att komma igång och skapa GUI-applikationer i.  = Installation Ubuntu =   &amp;lt;pre&amp;gt; sudo add-apt-repository ppa:plt/racket -y sudo apt update  sudo apt install racket &amp;lt;/pre&amp;gt;  Kör igång det inbyggda IDE:t med &amp;quot;drracket&amp;quot; antingen f...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Racket är ett programmeringsspråk i Lispfamiljen och underfamilj till Scheme. Det är kompatibelt med Scheme R5RS och andra varianter men har också ett eget väl utbyggt bibliotek av funktioner och rutiner och kanske en av de enklaste språken att komma igång och skapa GUI-applikationer i.&lt;br /&gt;
&lt;br /&gt;
= Installation Ubuntu = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo add-apt-repository ppa:plt/racket -y&lt;br /&gt;
sudo apt update &lt;br /&gt;
sudo apt install racket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kör igång det inbyggda IDE:t med &amp;quot;drracket&amp;quot; antingen från applikationsmenyn eller terminalen.&lt;/div&gt;</description>
			<pubDate>Fri, 03 Apr 2026 14:46:33 GMT</pubDate>
			<dc:creator>Anders</dc:creator>
			<comments>http://wiki.sikvall.se/index.php/Diskussion:Racket</comments>
		</item>
</channel></rss>