スポンサーリンク
スポンサーリンク
解答例
for i in 1 ... 4 {
moveForward()
moveForward()
moveForward()
if isOnClosedSwitch {
toggleSwitch()
}
turnRight()
}
解説
ワープがあるので複雑に見えるかもしれませんが、
3マス進んで『もしスイッチがoffならスイッチを切り替える』という条件をつけ、
最後に右を向くと1方向分が解決します。
それを、4回繰り返すだけです。
また、問題文に、『いろいろと試してみてくださいね!』とあるので、
whileループでも作ってみましょう。
while !isBlocked {
moveForward()
moveForward()
moveForward()
if isOnClosedSwitch {
toggleSwitch()
}
turnRight()
}
!isBlocked
は、『行き止まりになるまで(〜する)』でしたね。
あとはforループと同様に繰り返します。
問題文に、以下のように書いてあります。
whileループを使うことも、forループを使うことも、この両方を組み合わせることもできます。
せっかくなので、両方組み合わせてみます。
func solveRow() {
for i in 1 ... 3 {
moveForward()
}
if isOnClosedSwitch {
toggleSwitch()
}
turnRight()
}
while !isBlocked {
solveRow()
}
関数の中にforループを入れて、それをwhileループで活用してみました。
このように、色々なやり方に挑戦して、最適なやり方を見つけることができればいいですね。
要点まとめ
・whileループ、forループを使って様々な解決方法を見つけてみよう
スポンサーリンク