一个简单的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 : 正方形的新颜色
b : turmite 转动的方向
c : turmite 的新内部状态
例如,斐波那契数列的规则定义为181181121010 ,有两种状态和两种颜色,并分为四个三元组 {1,8,1}、{1,8,1}、{1,2,1} 和 {0 ,1,0}。基于当前状态和当前颜色来选择微粒三元组。因此,{1,8,1} 三元组表明颜色应更改为 1,向左转 (8) 并在继续前进之前采用状态 1。
转弯方向由下式指定:
1:不转弯
2:右
4:掉头
8:左
这些动作由状态转换表指定,该表列出了 turmite 的当前内部状态以及它当前所在的单元格的颜色。例如,下表使用了用于上面显示的斐波那契三元组的下一个规则集:
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} 三元组,并从中导出新的颜色、方向和状态。
使用 leiningen 调用黑色实例:
$ lein run
作为构建的一部分,clojure 脚本将编译为 javascript,因此浏览到 http://localhost:8080
不要尝试编辑 javascript - 它是使用 Leiningen 和 lein-cljsbuild 插件从src/turmites/client/core.cljs
中的 ClojureScript 编译而来的:
$ lein cljsbuild clean
$ lein cljsbuild auto
保存文件后刷新浏览器中的页面并允许编译阶段完成。
土蚁是兰顿蚁的概括。
部分灵感来自 Stephen Wolfram 的《一种新的科学》,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 公共许可证 - v 1.0 相同:https://www.eclipse.org/legal/epl-v10.html