【ブロックリー】迷路の考え方と学習内容を解説します

スポンサーリンク

何を学ぶことができるの?
難問で全然解けません!

こうした悩みを解決します。

記事の内容:
・迷路の学習内容
・レベル10の考え方

解説の根拠

組み込みエンジニアをやってます。
プログラミングが小学校で義務教育となって云々…
何か子供達に教える面白い教材ないか探していた所、ブロックリーを発見。
試しに迷路をやってみたところ、最終問題のレベル10でGoogleから
「難問です!スキップもできますよ」
と言われたので、ムキになって解けるまで頑張ってみました。
これはたしかに難しい…私は21分もかかりました。

スポンサーリンク

学習内容

迷路ではループ処理と分岐処理を学習します。

スタートから指定されたゴール地点まで行くプログラムを作ります。
進む、右を向く、左を向くと書かれたブロックをつなぎ合わせてゴールを目指します。

左から選択して、右のワークスペースにコピペすることでつなぎ合わせることができます。
ゴールまで短ければ、つなぎ合わせていけばよいですが、
長い距離を進み続けるときには、ずっと進んでもらいたいです。
そこで使うのがループ処理です。

ループ処理

緑色の「赤いポイント地点まで繰り返す」ブロックがループ処理になります。
プログラミングで言うところの、while文になります。
ループ処理は条件が満たされるまで延々とブロック内の処理を繰り返し実行し続けます。
ここで言えば、赤いポイント地点に到達するまでひたすら中身の処理を繰り返します。
(実際のプログラミングでは、下手にwhileループ使うと抜け出せずバグるので注意すべき処理)

分岐処理

ループに”まっすぐ進む”を入れておけば楽ちんでいいや!と思いますが、
曲がりたい時にはしっかり曲がれるようにしたいです。
そこで使うのが分岐処理です。上図で言うと、青色の「もし左に進めるなら」の部分です。
プログラミングで言うところの、if文になります。
分岐処理は、分岐条件が正しければその中身の処理を実行します。
ここで言えば、左に曲がれるなら、左を向く、を実行します。曲がれなかれば何も起こりません。

学習を進めると、分岐処理の条件が正しければAを実行、正しくなければBを実行のように
処理を分けて動作させることも学習します。
プログラミングで言うところの、if~else文になります。

分岐処理はプログラミングにおいて非常に重要な考え方なので、これが分かるだけでもやる価値あります。

レベル10の答え

早速ですが、迷路 レベル10の答えを下図で示します。

赤いポイントに到着するまで繰り返し実行する、のブロックがループ処理(=while)、
もし〜なら、のブロックが分岐処理(=if文、if~else文)ですね。

左下をスタートして赤いポイントまで最短ルートを考えます。
多くが2マス移動して左右に分岐することに着目し、2マス進むようにしました。
しかし、最後のポイント周辺は1マス構成となっているので、途中で落ちてしまいます。
落ちないように気をつけつつ行けるなら行っちゃいましょう、ということで
「もしまっすぐ進めるならまっすぐ進む」の分岐処理で制御しています。
赤いポイントまで繰り返す、の中の
「もしまっすぐ進めるならまっすぐ進む」
が2つ続く部分ですね。これによって、
2マス行けるなら2マス進む、1マス行けるなら1マス進む、これ以上行けないなら何もしない、
という動きになります。

プログラムを実行すると、左下からスタートし2マス進みました。
ゴールに行くにはここで左に曲がらなければなりません。

ここでまた分岐処理を用います。
「もし左に進めるなら左に進む」を追加しました。
するとどうでしょう、2マス真っすぐ進んで左に曲がる、2マス真っすぐ進んで左に曲がる、と
繰り返すと、左上の方にそれてしまいます。

これはおかしいですね。最初左に曲がった先の十字の分岐は右に行きたいです。
そこで、分岐条件を変えます。
「もし右に進めるなら右に、それ以外は左に曲がる」としてみます。
この条件だと右に曲がる処理の優先順位が高くなりました。

よしよし、十字の分岐は右にそれたし、最短経路で行けるかな?
次の左の分岐は…まず2マスまっすぐ進んで、右行けないなら左に曲がってくれよー…来い!来い!
おお!!曲がったー!ちゃんと曲がったぞー!

よし、続いて2マスまっすぐ進んだ後、Y字を左に行けばいいけど…行かなーい!
右優先だから右にそれてしまってるー!

…ということで、私の回答は結果としてゴールにたどり着くのですが、最短経路の答えではないです。

期待して読んで下さった皆様すみません…もう少しやってみて、最短経路の答えを探します。
最短経路ではなかったけど、とりあえず答えが出てスッキリ!

ゲームをやってみて感じたこと

プログラミングはゴールにたどり着くためにたくさんの方法があります。
私のやってる組み込みエンジニアと呼ばれる仕事だと、
この迷路で例えるなら、常に最短経路を目指さなければなりません。
無駄な処理させるほどの性能と時間に余裕がないからです。
ここらへんの話は、別記事にまとめましたので下記参照ください。

初めてプログラミングやってみるよー、って人には
ブロックリーとっても面白くて楽しいのでおすすめしたいです。無料なのも嬉しいですね。

まとめ

・迷路ではループ処理と分岐処理を学習します
・レベル10の回答を示していますが、これは最短経路ではありません(悔しー!)
・プログラミング未経験でも楽しく学ぶことができるのでオススメです!

1+

最後まで読んでいただきありがとうございました!この記事が気に入ったらハートのいいね!ボタンを押して頂けると嬉しいです!
今後の励みにします!(ちなみに、押すとボタン周辺にハートがフワフワ〜っと出てきて少し幸せな気分になれます笑)

プログラミング
カフェレストラン女神湖駅

コメント