スポンサーリンク
スポンサーリンク
解答例
func navigateAroundWall() {
if isBlockedRight && isBlocked {
turnLeft()
} else if isBlockedRight {
moveForward()
} else {
turnRight()
moveForward()
}
}
while !isOnClosedSwitch {
navigateAroundWall()
if isOnGem {
collectGem()
}
}
toggleSwitch()
解説
実行するたび、少しずつフィールドが変化するようです。
右手法で行けば良さそうですが、前回と同じようにするとうまく行かない場面が出てきます。
『疑似コード』を使って考えましょう、とあるので、書いてみます。
壁を周って進む {
右側が行き止まり かつ 前方が行き止まり {
左折
} 右側だけ行き止まり {
前進
} それ以外 {
右折
前進
}
}
offスイッチ上でない限り {
壁を周って進む
宝石の上なら {
宝石を取る
}
}
スイッチを切り替える
AND演算子(&&)を使うことにより、右と前方が行き止まりの場合の条件をつける事ができました。
ちなみに、if文の『else if
』は、複数使っても大丈夫です。
以下のような感じになります。
if 条件1 {
実行する内容
} else if 条件2 {
実行する内容
} else if 条件3 {
実行する内容
} else {
実行する内容
}
このような感じになります。そして、最後のelse
は省略可能です。
要点まとめ
・うまくいかない時は、もうひとつ条件を付け加えて新しいアルゴリズムを作ってみよう
スポンサーリンク