Swift Playgrounds

コードを学ぼう1【NOTで周る】解答例と解説

NOTで周る

解答例

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で周りましょう。笑
ちゃんと指示通りゴールすると、以下のメッセージになりましたよ。

要点まとめ

・!を使うと、『〜にならない限り』という使い方ができる