スポンサーリンク
スポンサーリンク
解答例
func turnAndCollectGem() {
moveForward()
turnLeft()
moveForward()
collectGem()
turnRight()
}
while !isBlocked {
turnAndCollectGem()
}
解説
関数がはじめから親切に書いてあるので、助かりますね。
ループを使うのはわかるけど、どっちのループを使えばいいのか・・・。
それについて、問題文に以下のように書いてあります。
コーディングでは、問題の解きかたを、好みによって選べるときがあります。
このようなときは、できるだけ、全体のコードが短くなる方法、またはたくさんのコードを再利用できる方法を選びましょう。
つまり、簡潔で分かりやすく、短いコードになるように考えないといけません。
そこで、whileループを使うと『行き止まりにならない限り繰り返す』ことができるので、分かりやすいです。
また、この課題では以下のように、forループも使うことができます。
func turnAndCollectGem() {
moveForward()
turnLeft()
moveForward()
collectGem()
turnRight()
}
for i in 1 ... 6 {
turnAndCollectGem()
}
短いし、分かりやすくて、このコードでも良さそうですね。
ただ、何回繰り返すのか数えないといけないので、
6回くらいならいいですが、これが何十回となってくると
whileループを使った方が分かりやすいのかもしれません。
このように、状況に応じてどのような条件を使うのか判断が必要ですね。
要点まとめ
・解き方が複数ある場合、簡潔で分かりやすく、短いコードになるようにしよう
スポンサーリンク