我寫了一個快速的康威實現的JS。爲蜂窩自動機計數鄰居單元
爲了計算鄰近給定單元的「活」單元的數量,我手動檢查了8個單元中的每一個。
function getNeighbourCount(x, y){
var intCount = 0;
intCount = (getCell(x-1, y-1)? intCount+1 : intCount); //x-1, y-1
intCount = (getCell(x, y-1)? intCount+1 : intCount);//x, y-1
intCount = (getCell(x + 1, y-1)? intCount+1 : intCount);//x + 1, y-1
intCount = (getCell(x-1, y)? intCount+1 : intCount);//x-1, y
intCount = (getCell(x+1, y)? intCount+1 : intCount);//x+1, y
intCount = (getCell(x-1, y+1)? intCount+1 : intCount);//x-1, y+1
intCount = (getCell(x, y+1)? intCount+1 : intCount);//x, y+1
intCount = (getCell(x+1, y+1)? intCount+1 : intCount);//x-1, y+1
return intCount;
}
它的作品,但似乎笨重。是否還有另一種更優雅的技術來實現同樣的目標?優選地適用於不同內核大小的技術。
下面是具有工作示例的小提琴: http://jsfiddle.net/3vpz14v7/
注:
- 遊戲的狀態在2D布爾陣列被保持(50 * 50在此實例中)
- getCell (x,y)返回包含coords的單元格的值。