gpt4 book ai didi

python - 有人可以向我解释一下这个图灵机代码吗?

转载 作者:太空宇宙 更新时间:2023-11-03 16:16:59 25 4
gpt4 key购买 nike

我是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())))

最佳答案

它是一个状态机。在每个刻度处,都会根据旧状态和此行中“磁带位置”处的磁带内容计算新状态:

state, tape[position], move = rules[(state, tape[position])]

该语句是一个解构赋值。作业的右侧将为您提供一个规则条目,它是三个元素的元组。这三个元素将分别被分配给状态、磁带[位置]和移动。

另一件事可能会让您感到困惑的是这句话:

system = tick(*system)

尤其是*。

在这一行中,调用(处理器时钟)tick 函数,并将元组“system”的内容解压缩为单独的参数。

我希望这足够清楚,但是您对图灵机感兴趣的事实告诉我您对计算机编程有所了解...;)

关于python - 有人可以向我解释一下这个图灵机代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38870330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com