Eine einfache N -Zustands-Zweifarben-Turingmaschine, die auf einem umwickelten Gitter aus schwarzen und weißen Zellen arbeitet und bei jedem Taktschlag benutzerdefinierten Regeln folgt.
Ein laufendes Beispiel finden Sie unter http://turmites.destructuring-bind.org. Standardmäßig wird automatisch eine Ameise erstellt; Durch Klicken auf die Leinwand können zusätzliche Ameisen hinzugefügt werden.
Regeln können durch Hinzufügen eines rule=...
Parameters angegeben werden, von dem einige zulässige Werte unten aufgeführt sind.
langtons-ant (mit der impliziten Regel 120080)
Spiralseil (implizite Regel: 111180121010)
Computerkunst (implizite Regel: 180121020081)
Fibonacci (implizite Regel: 181181121010)
Wurmspuren (implizite Regel: 121181121020)
gestreifte Spirale (implizite Regel: 021080181020)
Eine vollständige Liste der vordefinierten Regeln finden Sie hier. Wenn keine Regel angegeben ist, wird eine vordefinierte Regel zufällig ausgewählt. Alternativ können die Regeldefinitionen auch als Folge numerischer Ziffern angegeben werden, z. http://turmites.destructuring-bind.org/?rule=021080181020
Eine N -Zustands-Zweifarbenregel besteht aus 2N Tripeln {a,b,c} , wobei:
a : die neue Farbe des Quadrats
b : die Richtung(en), in die sich der Turmit dreht
c : der neue innere Zustand des Turmits
Beispielsweise hat der Fibonacci-Turmit mit der Regeldefinition 181181121010 zwei Zustände und zwei Farben und ist in vier Tripel {1,8,1}, {1,8,1}, {1,2,1} und {0 aufgeteilt ,1,0}. Das Partikeltripel wird basierend auf dem aktuellen Zustand und der aktuellen Farbe ausgewählt. Das {1,8,1}-Triple besagt also, dass die Farbe auf 1 wechseln, nach links abbiegen (8) und den Zustand 1 annehmen soll, bevor man vorwärts geht.
Die Drehrichtung wird angegeben durch:
1: keine Wende
2: richtig
4: Kehrtwende
8: links
Die Aktionen werden durch eine Zustandsübergangstabelle spezifiziert, die den aktuellen inneren Zustand des Turmites und die Farbe der Zelle, auf der er sich gerade befindet, auflistet. Der nächste Regelsatz, der für die oben gezeigten Fibonacci-Tripel verwendet werden soll, wird beispielsweise in der folgenden Tabelle verwendet:
current-color = 0 current-color = 1
current-state = 0 1,8,1 1,8,1
current-state = 1 1,2,1 0,1,0
Wenn also der aktuelle Zustand 1 und die aktuelle Farbe 0 ist, wird das {1,2,1}-Tripel ausgewählt und die neue Farbe, Richtung und der neue Zustand werden daraus abgeleitet.
Rufen Sie eine Noir-Instanz mit Leiningen auf:
$ lein run
Das Clojure-Skript wird im Rahmen des Builds in Javascript kompiliert. Navigieren Sie daher zu http://localhost:8080
Versuchen Sie nicht, das Javascript zu bearbeiten – es wird aus ClojureScript in src/turmites/client/core.cljs
unter Verwendung von Leiningen mit dem Plugin lein-cljsbuild kompiliert:
$ lein cljsbuild clean
$ lein cljsbuild auto
Aktualisieren Sie die Seite im Browser, nachdem Sie die Datei gespeichert haben, und warten Sie, bis die Kompilierungsphase abgeschlossen ist.
Turmiten sind eine Verallgemeinerung der Langtonameisen.
Inspiriert (teilweise) von Stephen Wolframs „A New Kind of Science“, ISBN 1-57955-008-8
http://www.maa.org/editorial/mathgames/mathgames_06_07_04.html
http://code.google.com/p/ruletablerepository/wiki/TwoDimensionalTuringMachines
http://demonstrations.wolfram.com/Turmites/
https://en.wikipedia.org/wiki/Turmite
http://golly.sourceforge.net/
Copyright (c) Richard Hull 2012
Identisch mit der öffentlichen Eclipse-Lizenz – Version 1.0: https://www.eclipse.org/legal/epl-v10.html