Простая двухцветная машина Тьюринга с N состояниями, которая работает с обернутой сеткой из черных и белых ячеек и следует специальным правилам на каждом такте часов.
См. http://turmites.destructuring-bind.org для рабочего примера. По умолчанию автоматически создается один муравей; Дополнительные муравьи можно добавить, щелкнув по холсту.
Правила можно указать, добавив параметр rule=...
, некоторые допустимые значения которого показаны ниже.
langtons-ant (который имеет неявное правило 120080)
спиральный канат (неявное правило: 111180121010)
компьютерное искусство (неявное правило: 180121020081)
Фибоначчи (неявное правило: 181181121010)
червячные следы (неявное правило: 121181121020)
полосатая спираль (неявное правило: 021080181020)
Полный список предопределенных правил можно найти здесь. Если правило не задано, то случайным образом будет выбрано заранее определенное. Или, альтернативно, определения правил могут быть указаны как последовательность числовых цифр, например. http://turmites.destructuring-bind.org/?rule=021080181020
Правило двух цветов с N -состоянием состоит из 2N троек {a,b,c} , где:
a : новый цвет квадрата
б : направление(а) поворота турмита.
в : новое внутреннее состояние турмита
Например, турмит Фибоначчи имеет определение правила 181181121010 , имеет два состояния и два цвета и разбит на четыре тройки {1,8,1}, {1,8,1}, {1,2,1} и {0. ,1,0}. Конкретная тройка выбирается исходя из текущего состояния и текущего цвета. Таким образом, тройка {1,8,1} утверждает, что цвет должен измениться на 1, повернуть налево (8) и принять состояние 1, прежде чем двигаться вперед.
Направление поворота определяется:
1: нет хода
2: верно
4: разворот
8: слева
Действия определяются таблицей перехода состояний, в которой указано текущее внутреннее состояние турмита и цвет ячейки, в которой он в данный момент находится. Например, следующий набор правил, который будет использоваться для показанных выше троек Фибоначчи, используется в следующей таблице:
current-color = 0 current-color = 1
current-state = 0 1,8,1 1,8,1
current-state = 1 1,2,1 0,1,0
Таким образом, если текущее состояние равно 1, а текущий цвет равен 0, то выбирается тройка {1,2,1}, и на ее основе получаются новый цвет, направление и состояние.
Вызовите экземпляр noir, используя leiningen:
$ lein run
Сценарий Clojure будет скомпилирован в JavaScript как часть сборки, поэтому перейдите по адресу http://localhost:8080.
Не пытайтесь редактировать javascript — он скомпилирован из ClojureScript в src/turmites/client/core.cljs
с использованием Leiningen с плагином lein-cljsbuild:
$ lein cljsbuild clean
$ lein cljsbuild auto
Обновите страницу в браузере после сохранения файла и дождитесь завершения этапа компиляции.
Турмиты являются обобщением Лэнгтонов-муравьев.
Вдохновлен (частично) книгой Стивена Вольфрама «Новый вид науки», 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/
Авторские права (c) Ричард Халл, 2012 г.
То же, что и общедоступная лицензия eclipse — версия 1.0: https://www.eclipse.org/legal/epl-v10.html.