スポンサーリンク
スポンサーリンク
解答例
for i in 1 ... 16 {
if !isBlocked {
moveForward()
} else {
turnLeft()
}
}
toggleSwitch()
解説
何度か実行してみると、歩数は変わらないけど曲がり角の位置が変わります。
ただ、3回曲がるということは同じです。
歩数は13ですが、ifで囲むと、『前進』か『左折』で1回分のループになるため
13に3を足さないといけません。
それで、forループは16回とします。
!isBlocked
で、『行き止まりでない限り』moveForward()
し、
それ以外(つまり、行き止まり)では左折とします。
最後のスイッチを忘れないように。
ちなみに、この課題は練習のため〝!〟を使わないといけませんが
使わなくてもゴールできます。
以下のようになります。
for i in 1 ... 13 {
moveForward()
if isBlocked {
turnLeft()
}
}
toggleSwitch()
すると、ゴールした時、以下のようなメッセージが出てきました。
!演算子を使わずにステージをクリアする方法を見つけましたね。すばらしいことです。独創的な解きかたを見つけられるのは、コーディングに重要な才能の1つです!でも、せっかく!演算子を学んだので、この演算子を使ってクリアする方法も考えましょう。今のうちに練習しておくと、あとで役に立ちますよ。
うっ・・・(照)
褒められつつも、遊んでいることがバレバレです。
『NOTで周る』という課題なんだから、NOTで周りましょう。笑
ちゃんと指示通りゴールすると、以下のメッセージになりましたよ。

要点まとめ
・!を使うと、『〜にならない限り』という使い方ができる
スポンサーリンク