好的,今天的目标是构建一个图灵机模拟器。对于那些不知道它是什么的人,请参阅Wikipedia 文章。我们今天使用的状态表位于作为该页面一部分的正式定义的末尾。
该代码将采用“0”和“1”字符串字符的序列,一个表示机器开始的字符的整数,以及一个表示程序状态的整数(无特定顺序),并输出最终结果对字符串的操作,以及最终位置。例子:
示例 1:
1010 state A(0)
^ (3)
1011 state B(1)
^ (2)
1011 state B(1)
^ (1)
1111 state A(0)
^ (2)
1111 state C(0)
^ (3)
1111 HALT
^ (2)
示例 2:
110100 state B(1)
^ (3)
110100 state B(1)
^ (2)
111100 state A(0)
^ (3)
111100 state C(2)
^ (4)
111110 state B(1)
^ (5)
1111110 state A(0)
^ (6, tape has been extended to right)
1111111 state B(1)
^ (5)
1111111 state B(1)
^ (4)
1111111 state B(1)
^ (3)
1111111 state B(1)
^ (2)
1111111 state B(1)
^ (1)
1111111 state B(1)
^ (0)
01111111 state B(1)
^ (0, tape has been extended to left)
11111111 state A(0)
^ (1)
11111111 state C(2)
^ (2)
11111111 HALT
^ (1)
杂项:
- 您的代码必须通过根据需要扩展字符串来正确处理写入磁带上“空格”的尝试。
- 由于指定的状态机未指定任何类型的“空白磁带”操作,因此将所有空白值视为 0。
- 您必须仅计算处理具有初始状态的字符串的评估的方法,如何输出该数据取决于您。
- 在磁带上向右移动是递增的(字符串位置 0 一直在左侧),状态 0 是 A,状态 1 是 B,状态 2 是 C。
(希望)最终编辑: 我对这个问题造成的混乱和麻烦表示最诚挚的歉意:我误读了我列出的提供的状态表,并将其倒退。我希望你能原谅我浪费你的时间;这完全是无意的!