Donut Maze 1


Posted by cwc329 on 2020-06-27

寫個解題心得,
雖然我覺得這題其實沒有新東西,
就只是處理比較麻煩。

走迷宮

本質還是走迷宮,也就是說 BFS 還是有用的,這題的重點其實在於傳送點怎麼處理。
首先題目說傳送點不計入步數,也就是說當從'.'走到字母的時候,其實就是直接走到下一個'.',這是我覺得這題很重要的一個點。
另外比較特殊的是還要自己找起點終點,而且起點還有終點沒有傳送點功能,這兩個點對於傳送點處理算是 edge case。
先來說說怎麼找起點還有終點,我的程式碼是把這兩個分開寫,不過心得寫到這邊想到其實可以寫成同一個 function。
原理很簡單,先找到 'AA' 還有 'ZZ' 的組合,然後再去找'.'
不過麻煩在於不知道兩個字還有點的相對位置,解決這個問題的想法後來也用在找傳送點。
就是找到第一個字(例如:'A'),然後去檢查這個字四周有沒有另一個字('A'),如果沒有就不是我們要找的;如果有,就以第一個字為基準,先往外一層找點,如果第一層沒有找到就在往外一層。
這樣其實有個限制,就是迷宮的重送點們彼此不相鄰,要是相鄰有可能會出現錯誤。
其實傳送點也是同樣的方式,只是當遇到傳送點,第一步要先找出字母組合,接著就是依樣畫葫蘆去找點,最後再傳回新的點之座標。
這題其實真的沒啥好講的,放在超級超級挑戰題也只是傳送點處理不是一般麻煩而已。
照慣例附上我超級醜的程式碼










Related Posts

Day 66

Day 66

[ 狀況題 ] 如何徹底將檔案從 Git 中移除?

[ 狀況題 ] 如何徹底將檔案從 Git 中移除?

TypeScript 筆記:推斷、註記與斷言

TypeScript 筆記:推斷、註記與斷言


Comments