こんにちは、ゆたわみわーくです。

今回もまたGoogleのBlockly Games(以下ブロックリー)の問題を解いてみたいと思います。

以前にご紹介した最初の難問「迷路」のレベル10を最短ルートでゴールに向かうプログラムは次の記事を参照ください。

【難問?】ブロックリー・ゲームの迷路 レベル10を解く。最短ルート編

今回は迷路の次のお題である「Bird(鳥)」のレベル10について、一般的な回答とは違う方法を考えて、解いてみたいと思います。

鳥は「if ,else if,elseの条件分岐と座標の問題で、無制限に条件を増やすことができるため、そんなに難しいことはありません。

レベル10は次の通り直角に曲がって虫をゲットして、同じく直角に曲がって帰るようにすればよいのです(画像をクリックすると大きくなります)。

つまりブロックリーで解くと次のようになります。

ですがこれはよくある回答になるので、今回はこの回答とは違う道をたどる回答を作りたいと思います。

X,Yの数値が違うだけではありません、曲がる回数も減らしますよ。

【別解】グーグルのブロックリー・ゲームの鳥 レベル10を解く。

ここまでのレベル1から9を解いた皆さんであれば、どのような角度をつけてどの座標位置で曲がるのも自由であることはすでにご理解いただけているはず。

それはレベル10であれ同じことです。

つまり、なにも直角に曲がらずとも、斜めに曲がってしまえばよいのです。

道をみつける

ずばり、道はこの通りです。

座標と角度は次の通りです。

  • 座標:X40
  • 角度1:75°
  • 角度2:325°
  • 角度3:135°
  • 角度4:255°

プログラムに落とし込む

単純に手順のみを示します。

まず1回目の進行は「虫を持っていないなら」「Xが40より小さければ」「75°の方向」になります。

続いて、同じく「虫を持っていないなら」ですが、今度は75°の進行で40を超えた場合つまり「Xが40より大きければ」虫の方向に向かうように「325°の方向」に進みます。

虫が取れたら今度は「Xが40より大きければ」逆方向の「135°の方向」へ。

そして最後はこれらすべての条件以外、つまり虫を持っていてXが40より小さいならば「255°の方向」へ

以上でプログラムは完了になります。

動かしてみましょう

さて、では作ってみたプログラムを実行した結果を見てみましょう。

山を描くような軌道で虫を取って帰ってくるようになりました。

条件分岐も減ったたためプログラムも短くなりました。

最後に、最初に掲載したよくある回答を再度掲載します。

比べてみてください。

この記事は以上となります。

最後まで読んでいただきありがとうございました。