Swift Playgrounds

コードを学ぼう1【並んだ階段】解答例と解説

並んだ階段

解答例

func collectGemTurnAround() {
  moveForward()
  moveForward()
  collectGem()
  turnLeft()
  turnLeft()
  moveForward()
  moveForward()
}

func solveRow() {
  collectGemTurnAround()
  collectGemTurnAround()
}

solveRow()
turnRight()
moveForward()
turnLeft()
solveRow()
turnRight()
moveForward()
turnLeft()
solveRow()

解説

この課題では、『分解』を使って効率よく宝石を取っていきます。
『分解』とは、より大きな問題を、管理しやすい小さなピースに切り分けるプロセスのこと、でしたね。
『目の前にある宝石を取って帰ってくる』という関数をまず作って、
それを2つ分つなげる関数をまた作ります。
そして、最終的に3列を解決(solve)するわけです。
一見難しそうに見えますが、階段は普通にmoveForward()で行けるので、
全て平坦な道と考えてみても大丈夫です。

要点まとめ

・『分解』を使って、わかりやすいコードを書こう

・再利用する時、後で見てもわかるように、わかりやすい関数の名前にしよう