休息是為了走更長遠的路‧閉嘴是為了吃更多的食物

2022/01/16閱讀時間約 2 分鐘
咦?!吃飯時突然靈光一閃,腦海中浮現一幅畫面:一張畫滿方格子像棋盤一樣的畫面,畫面四個角落的方格子特別引人注意。「對喔!這樣就不需要去判斷cell是不是位在邊界了。這麼簡單的方法,當初怎麼會沒想到?」。
俗話說:休息是為了走更長遠的路;閉嘴是為了吃更多的食物。別懷疑,後面那句是我加上去的。很多創意專家都認為,適當的休息,可以帶來更多的靈感。科學界這種例子很多:阿基米德洗澡的時候發現了浮力理論;Kekulé在夢到一條蛇咬住自己的尾巴之後,發現了被戲稱是烏龜殼的苯環結構。在想出了把universe四周圍都加寬一行來處理邊界問題之後,原本已經覺得沒有其他方法可以處理這個問題,而開始想接下來要怎麼寫了,沒想到幾天後,在吃飯時,居然又迸出了這個方法。
這個新想到的方法,其實挺簡單的,說穿了不值錢,就是把universe拆開成幾個部分分別處理,這樣也就不需要用到if來判斷cell是不是位在邊界了。那要怎麼個拆法呢?很簡單!特性一樣的放一起。重複處理相同特性的東西,是for迴圈的專長。所以有相同特性的cell,就可以用for迴圈來處理。那什麼叫「特性一樣」呢?就是cell周圍鄰居的數量和樣式都一樣。以最上面一排來說,除了左、右兩個角落外,其他的cell都有相同的特性,就是周圍都只有5個cell而不是8個,而且都是缺了上面3個。按照這樣的分拆方式,universe可以拆成9個部分,每個部分都有一樣的特性。這9個部分有:4個角落;周圍不含角落的上、下、左、右4排;除了角落、周圍之外的部分,也就是內部。
這樣子把universe拆成9個部分分別處理的方式,在寫程式時,也可以不需要用到if條件判斷式。不過啊,這樣子的程式讓人覺得很囉唆,又臭又長,而且嚴格來說,拆分universe的做法,其實也就只是用人工的方式來執行if條件判斷,比較起來,在周圍加上一排的做法,還是比較好。
寫程式的時候,同樣一個問題,解法通常不會只有一種,可是往往會陷在某個思路中而忽略了其他做法。一開始很直覺就想到要把universe用迴圈從頭到尾掃過去,所以就一直陷在這樣的思路裡面,完全沒想到可以用分拆的方式來避免過多的if條件判斷。這種狀況還挺常見的。所以啊,有時候在看以前寫的程式時,常會覺得:唉呦!怎麼會這樣寫啊?!這樣這樣寫,不是更好嗎?那時候到底在想什麼啊?!要克服這樣的盲點,適當的休息是很重要的。適當的休息可以把陷進泥淖而不自知的心思給拉出來,從不同的角度和觀點來看問題,這樣說不定會發現另外不同的解決問題的方法。
為什麼會看到廣告
13會員
86內容數
寫點東西自娛娛人
留言0
查看全部
發表第一個留言支持創作者!