问题标签 [conways-game-of-life]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
514 浏览

c - 从二维 C 数组中的前一个“行”获取值

我正在开发 1D Game of Life(基于Mathworld中规定的规则)。本质上,每一代都表示为一行 0 或 1(死或活),并且下一代是基于“规则”命令行参数的二进制表示创建的。

例如,规则 30 变为 00011110(30 的二进制),这用于确定哪些位模式将产生新的单元格或在下一代中自行消亡。

为了对此进行编程,我需要能够访问前一行中的三个一组的位(以应用规则)。下面是一个示例图像(请注意,起始行始终为 0,中间为 1):

为了生成一行,我必须以三个一组的方式查看上面一行中的位,然后将规则应用为 1/0,生死决定。

基本上我计划匹配 3 位模式和规则,并使用它为后代打印 0 或 1。这是一般算法:

我遇到困难的程序部分是访问前一行的内容。我所有的尝试都会产生垃圾或不正确的数据。

简而言之,我如何以三位为一组访问前一行的值?

行是这样创建的:

}

好的,所以我让这变得简单了很多,我只需要两个数组(一个保存前一列,一个保存当前列)。我不明白为什么打印输出数组会产生垃圾?output[i] = arr[i] 不是一个有效的表达式吗?

0 投票
1 回答
6121 浏览

c - C中的生活游戏

只是以为我会在康威的生命游戏中试一试,但我真的很挣扎……这真是一个惊喜!有人可以暗示算法问题吗?只是轻轻一推?这不是家庭作业。

这不需要输入,而是从 (0, 0)、(0, 1)、(1, 0) 和 (1, 1) 处的活细胞开始。一代后,它应该保持不变,但会杀死细胞,因此只有 (0, 0) 和 (1, 0) 是活着的。

0 投票
1 回答
3416 浏览

java - 生命游戏的问题

作为我自己的个人项目,我正在开发 Conway 的生活游戏的 Java 实现。到目前为止,它有效,但规则出现错误。预期的模式没有像应有的那样显示出来。我的代码有问题吗?

0 投票
3 回答
57 浏览

hash - 散列是比较两个 32x64 二维数组的好方法吗?

我正在尝试在嵌入式设备上实现康威的生命游戏。我只有 1kb 的 RAM 可以玩,总共有 2048 个单元,等于 512 字节。我将一次计算下一代 8x8 单元,这样我就不必在任何时候将两代存储在 RAM 中。

但是,我还想做的是检测 GoL 何时陷入循环/静态状态。当我在 PC 上创建模型时,我只是存储了最后的第 10 代和第 100 代,并将当前代与它进行比较。我不能用 1kb 的 RAM 做到这一点,我想做的只是计算最后 x 代的哈希并将其与当前一代的哈希进行比较。

XTEA 或 SHA1 有一些非常简单的实现,但我不确定散列是否真的适合这个目的,因为我需要确定两代中的每个单独的单元格是否相等。你会推荐什么?

谢谢,

编辑:只是想,我实际上可以计算匹配的数量,如果它达到某个阈值,然后假设它处于循环中,这对于每千代左右重复的模式来说效果不佳。

0 投票
2 回答
13130 浏览

python - 康威的 Python 人生游戏

我喜欢上了 Conway 的 Game of Life,并开始尝试用 python 编写它。目前我还没有为程序的边界编写任何代码,所以我只是在寻求我现在所拥有的帮助。初始化“信号灯”编队时,我似乎遇到了麻烦。它没有像应有的那样摆动,而是似乎把自己变成了一个立方体。

0 投票
3 回答
1212 浏览

php - 生命游戏(PHP)- 不理解我的输出

所以,基本上,我一直在编写这个 Game of Life PHP 脚本。我的输出很古怪,我无法弄清楚!整个方案由一个名为 $world 的二维数组组成,其中每个值对应于一个 2 状态单元格,该单元格可以是 1 或 0(活着或死去)。每个单元格有 8 个邻居。计算系统下一个状态的规则如下:

  1. 如果您有 2-3 个活着的邻居(1 个),那么您在下一回合还活着。
  2. 否则你就死定了。

我的实现如下:(注意:$j_minus,$i_plus等指的是$j-1, 等但考虑到边缘)

应用这些规则后,使 $new_world 成为系统的新状态,我将数组打印到屏幕上:

无论 的初始状态如何,我得到的$world要么是充满线条和大块的完全停滞状态,要么是 2-3 个此类状态之间的振荡。规则似乎没有正确应用!

0 投票
1 回答
628 浏览

java - 我如何在 java 中制作这个 Conways Life 程序

我正在用 java 制作康威的生命游戏程序,并试图将其从命令行版本更改为 GUI。从命令行我刚刚打印了一个显示世代的数组(块和闪烁器等对象显示为一系列 1 和 0,其中它是空白的,在 GUI 中我将它显示为正方形(白色正方形作为空白和蓝色方块,它不是)。但是我遇到困难的地方是当我制作另一种方法(它替换打印数组的方法)检查​​网格数组时,如果有一个零,那么正方形从白色到蓝色,反之亦然。康威的生活规则在一个独立的类中处理,这个方法所做的只是在规则改变了数组之后,这个方法检查它。

规则在一个类的方法中完成,而 GUI 组件在另一个类中完成。但是因为我需要两个实例,我将如何去做呢?,合并这两个类(所有的 GUI 类到 Life 类中,如何嵌入它们,我完全不知道该怎么做

这就是我现在将其更改为的内容,但是在编译时它说“grid不能从静态上下文引用非静态变量”和“不能从静态上下文引用非静态方法runGUI()”。尝试运行该方法时。

0 投票
3 回答
1577 浏览

java - 二维数组和空指针异常 (Java)

我真的不知道是什么导致了这个问题,但是我的程序,应该是康威的生命游戏,在 2 代后崩溃,似乎不管我做什么,我已经尝试了好几天来定位错误。

我已将原因缩小到几个可能的领域——或者至少,我认为我有。

我假设上面的这一部分检查了我的二维数组的边界之外,但这应该是不可能的,因为我采取了预防措施来确保不会发生这种情况。即便如此,这也是可能的原因之一。

这是我对错误原因的下一个猜测,但我无法真正判断出什么是错误的。

我只是发布上面的内容,因为它调用了上面的块,我不想排除任何事情。

我真的不知道还有什么问题,但以防万一有人想查看我项目的完整源代码,我已将其发布在 pastebin 上

0 投票
3 回答
610 浏览

xna - 加速元胞自动机

是否有可能通过某种算法或类似的东西来加速元胞自动机?我正在使用在 XNA 中制作的 Conway 的 Game of Life 实现,它运行良好,但问题是当我使用大于 128x128 单元格的网格时,它变得非常慢。

我不认为这与代码或 XNA 如何处理纹理和绘图有关,但更新这么多单元(即评估每个单元的邻居并基于获得其新状态)这一事实需要大量计算.

当然,理想的元胞自动机应该无限大,但实际上这是不可能的。但在我看来,128x128 太小了,无法真正看到系统的行为方式。

任何帮助将不胜感激!

0 投票
1 回答
182 浏览

scala - 如何在Scala中找到笛卡尔坐标的最小值和最大值

我正在尝试在有无限网格的 Scala 中解决 GameOfLife 问题。我试图将网格表示为一组单元格(x,y)。当我从说字符串中读取时,我从 (0,0) 开始。但是由于 GameOfLife 的规律,并且由于我在将规则应用于我的 Generation 类之后正在考虑 Infinite Grid,所以我想打印当前一代。

在这里,我不知道如何计算最小位置(读取 x,y 迭代器)从哪里开始迭代和打印“X”代表活细胞和“-”代表那一代的 GameOfLife 中的死细胞。我提供我的天真Generation类的toString方法的解决方案。但我对此一点也不满意。有人可以提出更好的解决方案吗?

这里的 aliveCells 是一个 Set[Cell] ,其中 Cell 是 Cell(x,y) 一个案例类。