Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有人能给我解释一下图灵机器代码吗?_Python_Computer Science_Turing Machines - Fatal编程技术网

Python 有人能给我解释一下图灵机器代码吗?

Python 有人能给我解释一下图灵机器代码吗?,python,computer-science,turing-machines,Python,Computer Science,Turing Machines,我是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),

我是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”的内容解压缩为单独的参数

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