我創建的算法(實施康威的人生遊戲規則)與康威的GoL不匹配。我已經嘗試過所有我能做的事情,但它只是不匹配。另外,如果有人知道如何將它變成一個無限的平面,或者可能包裝自己,我會有興趣看到它用我的代碼實現!康威的人生遊戲 - 不正確的算法?
運行的jsfiddle:http://jsfiddle.net/jGkKF/2/
相關代碼:
檢查活細胞周圍的細胞:(第28行)
var x2 = x+1, x3 = x-1, y2 = y+1, y3 = y-1; // Math
if(tC[x][y3] !== undefined && tC[x][y3]) ne++; // T
if(tC[x][y2] !== undefined && tC[x][y2]) ne++; // TR
if(tC[x2] !== undefined) {
if(tC[x2][y]) ne++; // R
if(tC[x2][y3] !== undefined && tC[x2][y3]) ne++; // BR
if(tC[x2][y2] !== undefined && tC[x2][y2]) ne++; // B
}
if(tC[x3] !== undefined) {
if(tC[x3][y]) ne++; // BL
if(tC[x3][y3] !== undefined && tC[x3][y3]) ne++; // L
if(tC[x3][y2] !== undefined && tC[x3][y2]) ne++; // TL
}
而且算法:(50號線)
if(cell && (ne < 2 || ne > 3)) cell = 0; // Over- or under- populated?
else if(!cell && ne == 3) cell = 1; // Give life?
我的意思是說引用。它檢查它們是否存在,由於它是一個有限的正方形,並且如果它仍然存在。如果兩者都是真的,那就算它。 – Alca
那麼,如果您在進行世代傳遞時更新單元矩陣,它將無法工作,因爲您將修改單元格,以便檢查「世界」網格的下一行。您可能希望通過在兩個*網格之間來回切換來完成工作。 – Pointy
啊。那麼這不是最佳的,但我會做到這一點。 – Alca