首页 > 解决方案 > Conway 在 Python 中的生命游戏在应该是死区的地方生成随机的长线

问题描述

决定尝试在 Python 中实现 Conway 的生命游戏。不是为了一个特别有效的实现或任何东西,只是想要一些有效的东西。我的板子是一个二维列表,每个单元格都有一个 1 或 0 来表示活着/死了。我现在正在随机生成种子;稍后我将致力于喂食种子。

我的完整代码可在 GitHub 上找到

问题是,我的生命游戏有时会在本应死亡的地方生成一长串活细胞。

示例: 到目前为止看起来很正常,但随后,非常下一代,突然排长队

这是我检查活细胞的代码(远非最佳,我知道可以用 mod 改进):

def alive(board, y, x):
    neighbors = 0
    left = x - 1 if x > 0 else 9
    right = x + 1 if x < 9 else 0
    up = y - 1 if y > 0 else 9
    down = y + 1 if y < 9 else 0
    neighbors += board[up][left] + board[y][left] + board[down][left] + board[up][x] + board[down][x] + board[up][right] + board[y][right] + board[down][right]
    return 1 if (board[y][x] == 0 and neighbors == 3) or (board[y][x] == 1 and (neighbors == 2 or neighbors == 3)) else 0

我的逻辑对我来说是有道理的,但我显然遗漏了一些东西。我认为这可能是由于主循环运行得太快,但我尝试增加睡眠时间,但这并没有改变。

标签: pythonmultidimensional-arrayconsoleconways-game-of-lifecellular-automata

解决方案


忘记了我从硬编码的宽度和高度切换到变量;而不是 9,应该是 width-1 和 height-1。哎呀。


推荐阅读