Беда с многомерными массивами - PullRequest
0 голосов
/ 26 марта 2019

Для домашней работы мне нужно представить ячейки во вселенной, где '*' означает живую ячейку, а пустое пространство ('') - мертвую ячейку.Следующие правила используются для определения статуса конкретной ячейки в следующих поколениях:

  • Умирает любая живая ячейка, у которой меньше двух живых соседей, как если бы она была вызвана недостаточным населением.
  • Любая живая клетка с двумя или тремя живыми соседями доживает до следующего поколения.
  • Любая живая клетка с более чем тремя живыми соседями умирает, как если бы она была вызвана перенаселением.
  • Любая мертвая клетка сровно три живых соседа становятся живой клеткой, как если бы она была вызвана размножением.

Например, рассматривая следующие массивы:

int[][] beehive = {{0,0,0,0,0,0}, {0,0,1,1,0,0}, {0,1,0,0,1,0}, 
{0,0,1,1,0,0}, {0,0,0,0,0,0}};
int[][] toad = {{0,0,0,0,0,0}, {0,0,1,1,1,0}, {0,1,1,1,0,0}, {0,0,0,0,0,0}};

getNextGenCell(beehive, 1, 3) returns 1, while getNextGenCell(beehive, 3, 1) 
returns 0.
getNextGenCell(toad, 0, 3) returns 1, while getNextGenCell(toad, 2, 3) 
returns 0.

Я не совсем понимаю, как поступить с этимкод.Любое предложение?

Мой код должен иметь следующий заголовок, где int x представляет подмассив, а int y представляет элемент внутри этого подмассива.Код возвращает 1, если ячейка жива в следующем поколении, или 0, в противном случае.

    // A method that gets the cell from the next generation

    public static int getNextGenCell(int[][] validUniverse, int x, int y) {


    }

1 Ответ

1 голос
/ 27 марта 2019

Сначала вы должны определить, как вы хотите, чтобы логика вашей программы работала.В этом случае вы знаете, что при обходе 2D-массива существует 8 различных случаев.К ним относятся:

  • Верхний левый угол
  • Верхний правый угол
  • Остальная часть первого ряда
  • Нижнийлевый угол
  • нижний правый угол
  • остаток последнего ряда
  • левая и правая части массива
  • Остальная часть массива

Вам понадобятся операторы if для каждого из этих случаев.Ниже приведен пример кода для случая «остальная часть массива»:

 if(x!=0&&y!=0&&x!=bees.length-1&&y!=bees[x].length-1&&bees[x][y+1]==1||bees[x][y-1]==1||bees[x+1][y]==1||bees[x-1][y]==1)

Теперь просто завершите остальные 7 случаев, подсчитайте количество «живых» или «мертвых» ячеек и изменитемассив соответственно.Дайте мне знать, если у вас есть какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...