コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています!
今回はDay32コードを学ぼう1の「一方でも正しければ合格」の攻略になります。

解答例と解説
解答例と解説を確認していきます!
解答例
コードの解答例は以下のようになります。

解答例を動画で確認する
上記のコードを実行した結果がこちらになります。
ステージ攻略「一方でも正しければ合格」
攻略
ステージを攻略していきましょう!

獲得しなければならない宝石は「0/1」なので、
画面奥にある1個を取ればクリアになります。
コード入力画面を見てください。
for文が入力されていて、繰り返しの回数は12です。
これがひとつヒントになります。

Byteの進むルートは上の画像のようになります。
このマス目を数えてみると、12マスになっています!
論理OR演算子 「 || 」
今回初登場の論理OR演算子「 || 」
言葉だけ聞くと「なんじゃそりゃ!?」って感じですが、中身が分かれば単純です。
これを使うと、先ほどのByteの進むルートを簡単に攻略することができます!
「宝石のマスにいるもしくは、左側が行き止まり」
このもしくはを表すのが論理OR演算子「 || 」です。
ルートを確認して、if文を設定する
それでは先ほどのルートを見ながら確認していきましょう!

手前のワープに入るまでを考えます。
初期位置から1マス進むと前に壁があり、そこで右に曲がる必要があります。
そこで、①「前が行き止まりの時」には「右に曲がる」ということがわかります。

次に、ワープの手前のマスから曲がる時です。
左の画像の位置まで来たら、右に曲がってワープに入ります。
この時、Byteの左側は壁になっています。
そこで、②「左側が行き止まりの時」には「右に曲がる」ということがわかります。
上の①と②は「右に曲がる」という行動は同じなので、ひとまとまりにしちゃいましょう!
「前が行き止まりの時もしくは、左側が行き止まりの時には右に曲がる」
これをコードで書き表すと、
if isBlocked || isBlockedLeft {
turnRight()
}
となります!!
ワープをした後もこれを使えば宝石まで辿り着けますね!!
論理AND演算子と論理OR演算子を区別する
例えば今回の場合に論理AND演算子を使ってしまうと、
「前が行き止まりのさらに、左側が行き止まりの時には右に曲がる」
になりますよね。
こうなるとByteの前と左側が行き止まりの時にしか、
右に曲がることができなくなってしまいます。
実際にコードを書いて実行してみるとわかりやすいかもしれません!
前回やった論理AND演算子との区別はよく注意する必要があります!!
タイトルの一方でも正しければとはこのことだったんですね。
まとめ
言葉だけ聞くと難しそうな論理OR演算子ですが、理解することはできたでしょうか。
論理AND演算子としっかり区別して使うことができれば、
今後にとても活かせそうです!
- 「 || 」はOR演算子
- OR演算子は、もしくはを表すことができる
- どちらか片方の状態であれば、コマンドが実行される
次回はDay33「論理の迷宮」でお会いしましょう!ではまた!!
