Swift Playgrounds

コードを学ぼう1【4つの場所に4つの宝石】解答例と解説

4つの場所に4つの宝石

解答例

func turnAround() {
  turnRight()
  turnRight()
}

func collectFour() {
  collectGem()
  moveForward()
  collectGem()
  turnAround()
  moveForward()
  turnRight()
  moveForward()
  collectGem()
  turnAround()
  moveForward()
  moveForward()
  collectGem()
}

moveForward()

for i in 1 ... 3 {
  collectFour()
  moveForward()
  moveForward()
}

collectFour()

解説

宝石の位置などを見ると、同じパターンを4回繰り返せばゴールかなと思います。
ただ、最後の場面では単純に4回繰り返す形では、行き止まりに2回もぶつかってカッコ悪くなります。
それでもゴールはできるのですが、やはり無駄なコードは無い方がいいですよね。
それで、forループで3回繰り返すことにして、最後はcollectFour()で終わりにします。

また、collectFour()は、関数にforループを使ってもいいかもしれません。
そうすると、以下のようになります。

func turnAround() {
  turnRight()
  turnRight()
}

collectFour() {
  for i in 1 ... 3 {
    moveForward()
    turnRight()
    moveForward()
    collectGem()
    turnAround()
 }
  moveForward()
  collectGem()
}

for i in 1 ... 3 {
  collectFour()
  moveForward()
  moveForward()
}

collectFour()

6〜16行目のあたりを変えてみました。
ゴールの仕方は一つではありません。
どうぞ参考にしてみてください。(⌒▽⌒)

要点まとめ

・関数とforループを使える場面を色々考えて試してみよう