有人可以向我解释这个图灵机代码吗?
Can someone explain to me this Turing machine code?
我是 Python 的新手,所以我不太明白。这是某种应该写二进制数的图灵机,但我无法弄清楚这些规则之后发生了什么
from collections import defaultdict
import operator
# Binary counter
# (Current state, Current symbol) : (New State, New Symbol, Move)
rules = {
(0, 1): (0, 1, 1),
(0, 0): (0, 0, 1),
(0, None): (1, None, -1),
(1, 0): (0, 1, 1),
(1, 1): (1, 0, -1),
(1, None): (0, 1, 1),
}
# from here I don't really understand what's going on
def tick(state=0, tape=defaultdict(lambda: None), position=0):
state, tape[position], move = rules[(state, tape[position])]
return state, tape, position + move
system = ()
for i in range(255):
system = tick(*system)
if(system[2] == 0):
print(map(operator.itemgetter(1), sorted(system[1].items())))
它是一个状态机。
在每个滴答处,都会根据旧状态和 'tape position' 处的磁带内容计算新状态,在这一行中:
state, tape[position], move = rules[(state, tape[position])]
这个语句是一个解构赋值。作业的右侧将为您提供一个规则条目,它是一个包含三个元素的元组。这三个元素将分别赋给 state、tape [position] 和 move。
另一件可能让您感到困惑的事情是:
system = tick(*system)
尤其是*.
在这一行中,(处理器时钟)滴答函数被调用,元组 'system' 的内容被解压到单独的参数中。
我希望这已经足够清楚了,但是您对图灵机感兴趣的事实告诉我您对计算机编程有所了解...;)
我是 Python 的新手,所以我不太明白。这是某种应该写二进制数的图灵机,但我无法弄清楚这些规则之后发生了什么
from collections import defaultdict
import operator
# Binary counter
# (Current state, Current symbol) : (New State, New Symbol, Move)
rules = {
(0, 1): (0, 1, 1),
(0, 0): (0, 0, 1),
(0, None): (1, None, -1),
(1, 0): (0, 1, 1),
(1, 1): (1, 0, -1),
(1, None): (0, 1, 1),
}
# from here I don't really understand what's going on
def tick(state=0, tape=defaultdict(lambda: None), position=0):
state, tape[position], move = rules[(state, tape[position])]
return state, tape, position + move
system = ()
for i in range(255):
system = tick(*system)
if(system[2] == 0):
print(map(operator.itemgetter(1), sorted(system[1].items())))
它是一个状态机。 在每个滴答处,都会根据旧状态和 'tape position' 处的磁带内容计算新状态,在这一行中:
state, tape[position], move = rules[(state, tape[position])]
这个语句是一个解构赋值。作业的右侧将为您提供一个规则条目,它是一个包含三个元素的元组。这三个元素将分别赋给 state、tape [position] 和 move。
另一件可能让您感到困惑的事情是:
system = tick(*system)
尤其是*.
在这一行中,(处理器时钟)滴答函数被调用,元组 'system' 的内容被解压到单独的参数中。
我希望这已经足够清楚了,但是您对图灵机感兴趣的事实告诉我您对计算机编程有所了解...;)