STAGE10 ジグザグザグジ
想定解法
- 使用ブロック数 : 13
- クリア時残り体力 : 249
ステージの狙い
ループブロックがないので関数を使います。
どのような動きが繰り返されるかはなんとなくわかると思います。
この二つがその繰り返される動きなんですが、これを関数化して使用すると星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が終了)
STAGE10 ジグザグザグジ
想定解法
ステージの狙い
ループブロックがないので関数を使います。
どのような動きが繰り返されるかはなんとなくわかると思います。
この二つがその繰り返される動きなんですが、これを関数化して使用すると星2が得られます。
このステージでは同じ関数が繰り返されるので、再帰関数を用いるとブロック数を省くことができます。
先に挙げた今回の繰り返される2通りの動きについて、前者がまず5回行われて、それから後者が6回行われるとゴールできるので再帰関数の「行きがけ」と「帰りがけ」を利用でき、それが想定解法となっています。
今回の解法の擬似コードは
def group1(): if 前が道: 前に1マス進む 右を向く 前に1マス動く 左を向く group1() 左を向く 前に1マス動く 右を向く 前に1マス動く group1()
となります。
2通りの動きのうち、前者を「動き1」、後者を「動き2」として、想定解法がどのような実行順序かを示すと、以下のようになります。