Подсчет соседних клеток для игры жизни Конвея в переполнении стека

Я пытаюсь написать метод подсчета соседей для игры жизни Конвея. Если мертвая клетка соседствует с 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;
}

1

Решение

Как отметил @AlexD, i<row+1 должно быть i<=row+1 который бы объяснил ваш ответ.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector