Py基礎組,已於2021/3/14 PM 9:00,進行Day 6課程˙討論。
相關資訊,更新於此。
謝謝,會議主持人Phillis精闢的講解。
以下為Phillis的筆記的連結。
2個讚
昨天說的機器人走迷宮(Maze*),附上我的code在下方(我發現我們那組的討論中,我也有放,不過當時沒放右轉的function code),純參考,每個人的寫法或有不同。
忘記在論壇還是 Discord 中,看到 @DotTw 提過,這種解法,碰到四週都是空地時會有問題,不過我還沒空去研究,解法應該會先試這個方式:如果連續繞四次回到原地時,就強制往前一步。
def turn_right():
turn_left()
turn_left()
turn_left()
## 可以右轉就右轉並前進、不然可以前進就前進、都不行就左轉;左轉後可前進就進前、不能前進就左轉再前進
def next_step():
if right_is_clear():
turn_right()
move()
elif front_is_clear():
move()
else:
turn_left()
if front_is_clear():
move()
else:
turn_left()
if front_is_clear(): # 前方應該沒東西,不然四面都是牆,但還是防呆一下,也許出題的人程式沒寫好
move()
while not at_goal():
next_step()
機器人走迷宮 Maze
1個讚
所以老師的解法裡,一開始也有走到底撞牆後左轉去達成一開始右邊就是牆壁的情況。
3個讚
sió-tī(小弟)我,回來面對這個章節了。
當初,看這個章節很痛苦,搞不清楚狀況。
看完老師的影片,63. Final Project: Escaping the Maze。
老師的解法,sió-tī(小弟)我認為比較複雜,dual while loop。
後來的三個挑戰題目(problem world/2/3),機器人的面向都是固定的。
我就嘗試,可能性的走法,使用條件多樣化。
試一試,沒想到就成功了。
def turn_right():
turn_left()
turn_left()
turn_left()
while not at_goal():
if front_is_clear():
move()
elif wall_in_front() and right_is_clear():
turn_right()
elif wall_in_front() and wall_on_right():
turn_left()
2個讚