AND(&&)に続いてOR(||)です。
1 |
(条件A) || (条件B) |
のように、2つの間に「||」を入れます。条件AとBのどちらかがtrueであれば全体としてはtrue扱いになります。整理すると以下のようになります。
条件Aの結果 | 条件Bの結果 | (条件A && 条件B)の結果 |
true | true | true |
true | false | true |
false | true | true |
false | false | false |
ANDが4パターンに1つしかtrueにならなかったのと比べるとORは逆に1パターンを除いてtrueという緩い論理演算という感じです。
ステージは、出題文でほぼ解説されています。「前が行き止まりの場合と左が行き止まりの場合を考えます」とあり、どちらの場合もやることは同じなので、ORを使ってどちらかが当てはまれば(真であるならば)その条件を実行します。「3 どちらも当てはまらない場合は、前に進みます」とありますが、実際のところは当てはまって曲がった場合も前に進むことにはかわらないなと思って、下のようにしてみました。もちろん普通にelseブロックにmoveForward()をしても良いでしょう。その場合はループの回数が少しかわってくるかも知れません。
1 2 3 4 5 6 7 |
for i in 1 ... 12 { if isBlocked || isBlockedLeft { turnRight() } moveForward() } collectGem() |