📅  最后修改于: 2020-05-10 13:56:45             🧑  作者: Mango
兰顿的蚂蚁是一种四态二维通用图灵机。 它是由克里斯·兰顿(Chris Langton)于1986年发明的。它基本上是只蚂蚁,坐在一个正方形的格子细胞上,这些格子最初是白色的。 蚂蚁在平面上移动并改变细胞的颜色,从而在其上形成图案。 但是蚂蚁的运动不是随机的。 它遵循以下规则集:
蚂蚁开始时,它在移动时会产生黑白图案。 最初,这些变化并不明显,但随着我们一遍又一遍地进行迭代,就会出现漂亮的图案。 但是,如果我们进一步增加迭代次数(例如〜10000),则蚂蚁将开始逐渐转移其路径,而不是形成新的模式。 因此,我们获得了无限的类似高速公路的图案。 蚂蚁在那条高速公路上继续行驶并给出以下模式。
下面给出了Langton’s Ant的Python-3代码:
# 导入乌龟模块
import turtle
def langton():
# 初始化窗口
window = turtle.Screen()
window.bgcolor( 'white' )
window.screensize( )
# 包含坐标和颜色
maps = {}
# 初始化蚂蚁
ant = turtle.Turtle()
# 蚂蚁的形状
ant.shape( 'square' )
# 蚂蚁的大小
ant.shapesize( 0.5 )
# 蚂蚁的速度
ant.speed( 10000 )
# 给出蚂蚁的坐标
pos = coordinate(ant)
while True :
# 蚂蚁会移动的距离
step = 10
if pos not maps or maps[pos] = = "white" :
# 反转颜色
ant.fillcolor( "black" )
# 在画布上盖章
ant.stamp()
invert(maps, ant, "black" )
ant.right( 90 )
# 使蚂蚁前进
ant.forward(step)
pos = coordinate(ant)
elif maps[pos] = = "black" :
ant.fillcolor( "white" )
invert(maps, ant, "white" )
ant.stamp()
ant.left( 90 )
ant.forward(step)
pos = coordinate(ant)
def invert(graph, ant, color):
graph[coordinate(ant)] = color
def coordinate(ant):
return ( round (ant.xcor()), round (ant.ycor()))
langton()
输出:
在此,白色单元格用”(空格)表示,黑色单元格用’•'(点)表示。