スポンサーリンク
スポンサーリンク
解答例
for i in 1 ... 8 {
moveForward()
if isOnGem && isOnClosedSwitch {
turnRight()
moveForward()
moveForward()
collectGem()
turnLeft()
turnLeft()
moveForward()
moveForward()
turnRight()
collectGem()
toggleSwitch()
} else if isOnClosedSwitch {
toggleSwitch()
turnLeft()
}
if isOnGem {
collectGem()
}
}
解説
8マス進んだら、ゴール。
その中で、①右に進んだ先の宝石を取ってくる、②スイッチを押して左を向く、③宝石を取る
の3パターンがあると気付きます。
if isOnGem && isOnClosedSwitch
で、①の処理
else if isOnClosedSwitch
で、②の処理
if isOnGem
で、③の処理をします。
ぱっと見複雑なので、よく考えないと分かりませんが
『2歩先に宝石がある』とか『曲がり角はいつもoff Switchがある』など
まとめることができる法則に気付きましょう。
一番単純なルート ➕ 小さな固まり に気づくと、完成できます。
めっちゃ難しいですね。
ゴールしたら、このようなメッセージが現れます。
おめでとうございます!
論理演算子が終わりました。がんばったのですから、両手を挙げて、〝やった!〟と叫んでお祝いしましょう!
ここまで来ると、かなり達成感ありますね(⌒▽⌒)
要点まとめ
・NOT演算子(!) コードのブール値を逆にする
・AND演算子(&&) 2つのブール値が両方ともtrueならtrueになる
・OR演算子(||) 2つのブール値の一方、または両方がtrueならtrueになる
スポンサーリンク