gpt4 book ai didi

javascript - 康威的生命游戏 - 算法不正确?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:27:25 26 4
gpt4 key购买 nike

我创建的算法(康威生命游戏规则的实现)与康威的 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?

最佳答案

几个项目:

  1. 游戏规则要求检查所有 8 个周围的方 block 。根据您的代码,您似乎只检查了其中的 6 个。编辑:OP 正在检查所有 8 个。我仍然推荐第 2 点,它允许对每个被检查的单元格进行一致的处理。
  2. 处理它的最简单方法是设置需要检查的单元格列表,然后在该列表上运行循环以进行计数。
  3. 要设置包装列表,请在设置单元格列表时使用边界检查代码,例如
    • 如果 cellIndex < 0 则 cellIndex == maxIndex
    • 如果 cellIndex >= maxIndex 则 cellIndex = 0
  4. 如果您在尝试计算“下一代”时更新代表“这一代”的值,您需要警惕可能发生的“扫描线”效应。两者需要独立存放。请注意,如果您使用的是整数数组,这可能只是意味着将“这一代”存储为 0 和 1,而“下​​一代”活细胞可以通过添加 8 等来表示。处理完当前这一代后,更改所有内容 > = 8 比 1,任何 < 8 的单元格都变为 0。

关于javascript - 康威的生命游戏 - 算法不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22964387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com