http://morphett.info/turing/turing.html
如何创建循环数字序列,例如:
... 01011011101111011111
所以基本上添加一个零,然后加1,然后加零,然后在前一个数的顶部加1。
答案 0 :(得分:1)
在录像带上写下01
。向右移动一个空格。如果您正在查看零,请向左扫描,直到看到零。向右移动一个空格。如果您正在查看一个,请将其替换为两个并向右移动,直至看到零;然后继续向右移动,直到你又一个零。用一个替换这个零。然后,向后移动,直到看到两个。用一个替换两个。向右移动一个;如果你正在看一个,重复用两个替换的过程再回来。最终,你将耗尽之前的1s,所以当你向右移动时你会看到零。在这种情况下,向右移动到下一个零,并用一个替换它。循环整个过程(减去“写01
部分”以获得更长的字符串。
这背后的直觉是直截了当的。如果向右移动并看到零,则向左移动两个零,在找到零之后复制最后一个和倒数第二个零之间的所有零,然后再添加一个零。这两个用作跟踪您正在复制的字符串中的位置的方法。基本的想法是合理的,但你应该尝试写出状态和转换,以使其严格。
示例:
>
^
>0
^
>01
^
>010
^
>010
^
>010
^
>020
^
>0200
^
>0201
^
>0201
^
>0101
^
>0101
^
>01010
^
>010110
^