根据规范,
黑色色块和程序的边缘限制了程序流程。如果 Piet 解释器试图移入黑色块或离开边缘,它会停止并切换 CC。然后解释器再次尝试从其当前块移动。如果第二次失败,DP 将顺时针移动一步。重复这些尝试,在交替尝试之间更改 CC 和 DP。如果在八次尝试之后解释器不能离开它当前的色块,就没有出路并且程序终止。
除非我读错了,否则这与此处的斐波那契数列示例的行为不一致:
(来自:http ://www.dangermouse.net/esoteric/piet/samples.html )
具体来说,为什么 DP 碰到左边缘时会在 (0,3) 处左转((0,0) 是 (top, left))?此时,DP 和 CC 都是 LEFT,所以,根据我的阅读,顺序应该是:
- 尝试(但失败)通过在 (0,4) 处离开边缘来离开块,
- 将 CC 切换到右侧,
- 通过在 (0,2) 处离开边缘来尝试(并失败)离开块。
- 将 DP 旋转到 UP,
- 通过进入 (1,1) 处的白色块尝试(并成功)离开 (1,2) 处的块
跟踪指示的行为似乎是 DP 一直旋转,将 CC 留在左侧。
我误解了什么?