Все задачи
Средне Решено: 0 Процент решений: 0%

Шаг игры «Жизнь»

Выполните один шаг игры «Жизнь» Конвея.

Каждая клетка либо жива (1), либо мертва (0), и имеет до 8 соседей. В следующем поколении живая клетка выживает при 2 или 3 живых соседях, а мёртвая становится живой только при ровно 3 живых соседях. Клетки за пределами сетки считаются мёртвыми. Все клетки обновляются одновременно.

Реализуйте функцию next_generation(grid).

Входные данные

grid: Прямоугольная сетка из 0 и 1.

Выходные данные

Верните следующее поколение.

Ограничения

0 ≤ строки, столбцы ≤ 200

Примеры

Пример 1
Ввод:
grid = [
    [0, 1, 0],
    [0, 1, 0],
    [0, 1, 0]
]

Ожидаемый вывод:
expected = [
    [0, 0, 0],
    [1, 1, 1],
    [0, 0, 0]
]
Ввод:
std::vector<std::vector<long long>> grid = {
    {0, 1, 0},
    {0, 1, 0},
    {0, 1, 0}
};

Ожидаемый вывод:
std::vector<std::vector<long long>> expected = {
    {0, 0, 0},
    {1, 1, 1},
    {0, 0, 0}
};
Ввод:
long[][] grid = new long[][] {
    new long[] {0, 1, 0},
    new long[] {0, 1, 0},
    new long[] {0, 1, 0}
};

Ожидаемый вывод:
long[][] expected = new long[][] {
    new long[] {0, 0, 0},
    new long[] {1, 1, 1},
    new long[] {0, 0, 0}
};

Пояснение

Вертикальный «мигалка» становится горизонтальным: центральная клетка выживает, а её левые и правые соседи оживают, заполняя среднюю строку.

Пример 2
Ввод:
grid = [
    [1, 1],
    [1, 1]
]

Ожидаемый вывод:
expected = [
    [1, 1],
    [1, 1]
]
Ввод:
std::vector<std::vector<long long>> grid = {
    {1, 1},
    {1, 1}
};

Ожидаемый вывод:
std::vector<std::vector<long long>> expected = {
    {1, 1},
    {1, 1}
};
Ввод:
long[][] grid = new long[][] {
    new long[] {1, 1},
    new long[] {1, 1}
};

Ожидаемый вывод:
long[][] expected = new long[][] {
    new long[] {1, 1},
    new long[] {1, 1}
};

Пояснение

У каждой клетки блока 2×2 — 3 соседа, поэтому блок остаётся неизменным.

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.