According to the specification,
Black colour blocks and the edges of the program restrict program flow. If the Piet interpreter attempts to move into a black block or off an edge, it is stopped and the CC is toggled. The interpreter then attempts to move from its current block again. If it fails a second time, the DP is moved clockwise one step. These attempts are repeated, with the CC and DP being changed between alternate attempts. If after eight attempts the interpreter cannot leave its current colour block, there is no way out and the program terminates.
Unless I'm reading it incorrectly, this is at odds with the behaviour of the Fibonacci sequence example here:
(from: http://www.dangermouse.net/esoteric/piet/samples.html)
Specifically, why does the DP turn left at (0,3) ((0,0) being (top, left)) when it hits the left edge? At this point, both DP and CC are LEFT, so, by my reading, the sequence should then be:
- Attempt (and fail) to leave the block by going off the edge at (0,4),
- Toggle CC to RIGHT,
- Attempt (and fail) to leave the block by going off the edge at (0,2).
- Rotate DP to UP,
- Attempt (and succeed) to leave the block at (1,2) by entering the white block at (1,1)
The behaviour indicated by the trace seems to be that DP gets rotated all the way, leaving CC at LEFT.
What have I misunderstood?