【发布时间】:2015-09-18 17:09:11
【问题描述】:
我正在尝试编写一个程序,在 20x60 单元格的网格上实现康威的生命游戏。网格应该环绕,以便左侧连接到右侧,顶部连接到底部。
因此,任何位置为(0, col) 的单元格都将在(maxRow, col) 处有一个邻居。任何位置为(row, 0) 的单元格都将在(row, maxCol) 处有一个邻居。
下面的函数应该计算相邻单元格的数量。它适用于不在边缘的坐标,但不适用于边缘的坐标。例如,如果将(0, 10)、(0, 11)、(0, 12) 和(0, 10) 处的点传递给函数,它将返回一个高数字作为邻居计数而不是1。我知道 mod 运算符 % 会有所帮助,但我不明白如何使用它。
{
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]; }
if (row==maxrow-1 || row==0)
count = count+ grid [(row-(maxrow-1))*-1][col-1]+grid[(row-(maxrow-1))*-1][col]+grid[(row-(maxrow-1))*-1][col+1];
if (col==0 || col==maxcol-1)
count=count +grid[row-1][(col-(maxcol-1))*-1]+grid[row][(col-(maxcol-1))*-1]+grid[row+1][(col-(maxcol-1))*-1];
count -= grid[row][col];
return count;
}
【问题讨论】:
标签: c++ algorithm modulo cellular-automata