Подсчет соседних ячеек для игры Конвея «Жизнь» на C++

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

person Community    schedule 16.09.2015    source источник
comment
как обновить сетку? Если я правильно помню, у вас должно быть две сетки в памяти, старая и обновленная, чтобы вы считали старых соседей, а не уже обновленные.   -  person 463035818_is_not_a_number    schedule 17.09.2015


Ответы (1)


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

person Marius    schedule 17.09.2015