⒈NOT演算子を使う
isBlocked(行き止まり)の条件がfalse(偽)になる場合、!isBlockedと書くと、true (真)になります。
! を使って、キャラクターが “宝石の上にいない” ことを条件にしています。
解答例
解答例
解説
for i in 1 ... 4 {
moveForward( )
if isOnGem {
collectGem ()
} else if !isonGem {
turnLeft()
moveForward()
moveForward()
collectGem()
turnLeft()
turnLeft()
moveForward()
moveForward()
turnLeft()
}
}
4回のループ {
前に進む
もし、宝石の上に居たら
宝石を取る
} そうでなくもし、宝石の上で無かったら {
左を向く
前に進む
前に進む
宝石を取る
左を向く
左を向く
前に進む
前に進む
左を向く
}
}
⒉ NOTで周る
NOT演算子 ! を使って、13個のマスを進む為に !isBlock の演算子を書きます。
13回ループして、最後にスイッチを入れます。
解答例
解答例
解説
for i in 1 ... 13 {
if !isBlocked {
moveForward()
} else {
turnLeft()
moveForward()
}
toggleSwitch()
13回のループ {
もし、行き止まりで無かったら {
前に進む
} そうで無い場合 {
左を向く
前に進む
}
スイッチを入れる
⒊ 両方正しければ合格
一歩進んで もし、宝石の上に居て 左側がブロックされて居たら
if isonGem && isBlockeleft
の動作をループの中に書き込みます。
解答例
解説
for i in 1 ... 7 {
moveForward()
if isonGem && isBlockedLeft {
collectGem()
turnRight()
moveForward()
moveForward()
toggleSwitch()
turnLeft()
turnLeft()
moveForward()
moveForward()
turnRight()
} else if isOnGem {
collectGem()
}
}
7回のループ {
前に進む
もし、宝石の上 そして 左が壁なら {
宝石を取る
右を向く
前に進む
前に進む
スイッチを入れる
左を向く
左を向く
前に進む
前に進む
右を向く
} そうで無い場合 もし、宝石の上なら {
宝石を取る
}
}
⒋ 一方でも正しければ合格
OR演算子 || を使い、前が行き止まりになる場合と、左が行き止まりになる場合を考えます
→ どちらかが当てはまる場合は、右に曲がり、どちらも当てはまらない場合は、前に進む を12回繰り返して最後に宝石を取ります。
解答例
解説
for i in 1 ...12 {
if isBlocked || isBlockedLeft {
turnRight()
moveForward()
} else {
moveForward()
}
}
collectGem()
12回のループ {
もし、行き止まり 又は 左が壁なら {
右を向く
前に進む
} どちらでも無い場合 {
前に進む
}
}
宝石を取る
⒌ 論理の迷宮
パターン1=宝石の上、スイッチが切れている、右に宝石がある
パターン2=スイッチが切れていて前が行き止まりー右に曲がらなくてはいけない
パターン3=宝石がある
パターン4=スイッチが付いている→ないない何もしなくて良い
解答例
解説
for i in 1 ... 8 {
moveForward()
if isonGem && isOnClosedSwitch {
collectGem()
turnRight()
moveForward()
moveForward()
collectGem()
turnRight()
turnRight()
moveForward()
moveForward()
toggleSwitch()
turnRight()
} else if isOnClosedSwitch {
toggleSwitch()
turnLeft()
}
if isOnGem {
collectGem()
}
}
8回のループ {
前に進む
もし、宝石の上 + スイッチが切れている場合 {
宝石を取る
右を向く
前に進む
前に進む
宝石を取る
右を向く
右を向く
前に進む
前に進む
スイッチを入れる
右を向く
} そうで無く もし、スイッチが切れていたら {
スイッチを入れる
左を向く
}
もし、宝石の上なら {
宝石を取る
}
}



コメント