我试图为康威的生活游戏写一个计数邻居方法。如果一个死细胞与2或3个活细胞相邻,它应该会活过来。然而,我的代码没有正确计算所有的邻居。如果我给输入坐标(10, 10), (10, 11), (10, 12)这将产生
***
该程序将下一代打印为
*
*
坐标在(10,11)和(11,11)。但是,在(9,11)也应该有一个点。我知道问题发生在这个函数中,对于点(9,11),函数不包括3个邻居。
int Life::neighbor_count (int row, int col)
{
int i, j;
int count=0;
for(i=row-1; i<row+1; i++){
for (j=col-1; j<=col+1; j++){
count +=grid[i][j];//increase the count is neighbor is alive
}
}
count -=grid [row][col];//reduce count, since cell is not its own neighbor
return count;
}
正如@AlexD指出的,i
我的问题很难描述,所以我会尽可能简洁地解释。 在康威的《生活游戏》中,假设我有一张这样的地图: 与其在每个单元格上循环,包括不可能相关的死单元格,不如让我将第0代中的每个活单元格放在
我正在用Java编写Conway的生活游戏,在代码中遇到了一个逻辑错误。如果您不熟悉游戏,以下是基本规则: 生命的游戏是一个简单的模拟,发生在一个网格的细胞。每个细胞可以是活的,也可以是死的,并且它与相邻的细胞相互作用(水平、垂直或对角)。在每次迭代中,都会做出决定,看看活细胞是否存活,或者死细胞是否存活。算法如下: 如果一个细胞是活的:如果它有少于两个活着的邻居,它会因为孤独而死亡。如果它有两个
我正在制作康威的生活游戏,就像几乎所有其他初学者一样。我的主要问题是我不知道如何执行游戏规则,这些规则是:一个有三个活邻居的死细胞变成活细胞,一个有一个活邻居的活细胞变成死细胞,一个有三个以上活邻居的活细胞变得死了。我以前从未操纵过矩阵,所以我不知道从哪里开始。我所在的类还不允许我们使用非静态方法,而且我们也不能使用java库。这是我目前所拥有的: 我现在收到的输出是我最初一代游戏所需要的。我想我
问题围绕康威的人生游戏,以及如何为新一代同时实施所有规则。这个游戏遵循三条新世代的规则:一个只有三个活邻居的死细胞变为活细胞,一个只有一个活邻居的活细胞变为死细胞,一个有三个以上活邻居的活细胞变为死细胞。原始世代是随机的。我认为,我的问题在于,我的新一代正在一次一个地实施规则,而不是一次全部实施,这是一种方法: 以下是我的完整代码,以防问题不在该方法中: 以下是我的输出: 我期待这样的事情: 在我
我最近已经解决了名为“康威的人生游戏”的有趣的黑客问题问题陈述如下: 《生命的游戏》是一款由英国数学家约翰·霍顿·康威设计的细胞自动机游戏。最初的游戏是零人游戏。它的发展完全取决于它的投入。 生命游戏在2D网格上进行。网格中的每个单元格将处于两种可能状态之一, 活死人细胞的出生或死亡是基于以下规则。 如果一个细胞正好被3个活细胞包围,它就会从死细胞转换为活细胞。如果一个细胞被2或3个活细胞包围,它
在本章中,我们考虑二维细胞自动机,特别是 John Conway 的生命游戏(GoL)。 像上一章中的一些 CA 一样,GoL 遵循简单的规则并产生令人惊讶的复杂行为。 就像沃尔夫勒姆的规则 110 一样,事实证明 GoL 是通用的;也就是说,至少在理论上它可以计算任何可计算的函数。 GoL 的复杂行为引发了科学哲学问题,特别是科学现实主义和工具主义的相关问题。 我讨论这些问题并提出扩展阅读的建议