仕様によると、
黒色のブロックとプログラムの端は、プログラムの流れを制限します。Piet インタープリターが黒いブロックに移動しようとしたり、エッジから離れようとすると、停止し、CC が切り替えられます。次に、インタープリターは現在のブロックから再び移動しようとします。2 回目に失敗すると、DP は時計回りに 1 ステップ移動します。これらの試行が繰り返され、試行ごとに CC と DP が変更されます。8 回試行してもインタプリタが現在のカラー ブロックを離れられない場合、抜け道はなく、プログラムは終了します。
私の読み方が間違っていない限り、これはフィボナッチ数列の例の動作と矛盾しています。
(出典: http://www.dangermouse.net/esoteric/piet/samples.html )
具体的には、左端に当たったときに DP が (0,3) ((0,0) は (上、左) である) で左に曲がるのはなぜですか? この時点で、DP と CC の両方が LEFT であるため、私の読みでは、シーケンスは次のようになります。
- (0,4) のエッジから外れてブロックを離れようとして (そして失敗しました)、
- CCをRIGHTに切り替え、
- (0,2) のエッジを外れてブロックを離れようとします (そして失敗します)。
- DPをUPにローテーションし、
- (1,1) の白いブロックに入って、(1,2) のブロックを出ようとする (そして成功する)
トレースによって示される動作は、DP が完全に回転し、CC が LEFT のままになっているようです。
私は何を誤解しましたか?