Donut Maze 1


Posted by cwc329 on 2020-06-27

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

走迷宮

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










Related Posts

[Note] React: Component props

[Note] React: Component props

筆記:淺談 JavaScript 頭號難題 this:絕對不完整,但保證好懂

筆記:淺談 JavaScript 頭號難題 this:絕對不完整,但保證好懂

JS 綜合示範 : 簡易密碼產生器 & 動態表單通訊錄

JS 綜合示範 : 簡易密碼產生器 & 動態表單通訊錄


Comments