STAGE10 ジグザグザグジ

想定解法

ステージの狙い

ループブロックがないので関数を使います。
どのような動きが繰り返されるかはなんとなくわかると思います。

この二つがその繰り返される動きなんですが、これを関数化して使用すると星2が得られます。

このステージでは同じ関数が繰り返されるので、再帰関数を用いるとブロック数を省くことができます。
先に挙げた今回の繰り返される2通りの動きについて、前者がまず5回行われて、それから後者が6回行われるとゴールできるので再帰関数の「行きがけ」と「帰りがけ」を利用でき、それが想定解法となっています。
今回の解法の擬似コードは

def group1():
    if 前が道:
        前に1マス進む
        右を向く
        前に1マス動く
        左を向く
        group1()
    左を向く
    前に1マス動く
    右を向く
    前に1マス動く
    
group1()

となります。
2通りの動きのうち、前者を「動き1」、後者を「動き2」として、想定解法がどのような実行順序かを示すと、以下のようになります。

(一回目のgroup1の呼び出し)
動き1 
    (二回目のgroup1の呼び出し)
    動き1
        (三回目のgroup1の呼び出し)
        動き1
            (四回目のgroup1の呼び出し)
            動き1
                (五回目のgroup1の呼び出し)
                動き1
                    (六回目のgroup1の呼び出し)
                    動き2
                    (六回目のgroup1が終了)
                動き2
                (五回目のgroup1が終了)
            動き2
            (四回目のgroup1が終了)
        動き2
        (三回目のgroup1が終了)
    動き2
    (二回目のgroup1が終了)
動き2
(一回目のgroup1が終了)