スポンサーリンク
スポンサーリンク
解答例
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()
で行けるので、
全て平坦な道と考えてみても大丈夫です。
要点まとめ
・『分解』を使って、わかりやすいコードを書こう
・再利用する時、後で見てもわかるように、わかりやすい関数の名前にしよう
スポンサーリンク