2011-05-29 61 views
1

嘿,我最近用JavaScript寫了這個相當簡單的game of life有效的方法來檢查給定點周圍的所有點

在此腳本中,我檢查給定單元格周圍的所有單元格,我目前通過八個 if語句執行此操作。

它的作品,但只是感覺錯誤和硬編碼。會不會有更快,更有效的方法呢?或者,大量的if語句是唯一的方式?

回答

2

如何創建偏移量數組和循環數組?

var offsets = [{dx:1,dy:1},{dx:0,dy:1}, ... 
+0

我喜歡這個想法,我只會扔在一起快速[jsPerf](http://jsperf.com/),看看會發生什麼:) – Olical 2011-05-29 10:56:08

+0

那麼,如果語句仍然更快,不確定爲什麼。繼承人[測試](http://jsperf.com/checking-all-points-around-a-point)。嗯,這是一個艱難的選擇,我想我只需要加快循環而不是if語句。 – Olical 2011-05-29 11:15:01

+0

if語句涉及的計算可能較少......猜測這是一個折衷。 – awm 2011-05-29 11:17:36

0

您可以優化,例如,而不是檢查,如果x> 0很多次,把只有一個包裹其他IFS

if(x > 0) { 
    if(cells[x - 1][y]) 
     alive++; 

    if(y > 0 && cells[x - 1][y - 1]) 
     alive++; 

    if(y < edgeAmount && cells[x - 1][y + 1]) 
     alive++; 
} 
0

您可以創建得到了一些步驟後更新的查找表,所以你加快計算

相關問題