All challenges
Medium 0 solved 0% acceptance

Game of Life Step

Advance Conway's Game of Life by one generation.

Problem

Each cell is alive (1) or dead (0) and has up to 8 neighbors. In the next generation a live cell survives with 2 or 3 live neighbors, and a dead cell becomes alive with exactly 3. Cells outside the grid are dead. All cells update at the same time.

Implement next_generation(grid).

Input

grid: A rectangular grid of 0s and 1s.

Output

Return the next generation.

Constraints

0 ≤ rows, columns ≤ 200

Examples

Example 1
Input:
grid = [
    [0, 1, 0],
    [0, 1, 0],
    [0, 1, 0]
]

Expected output:
expected = [
    [0, 0, 0],
    [1, 1, 1],
    [0, 0, 0]
]
Input:
std::vector<std::vector<long long>> grid = {
    {0, 1, 0},
    {0, 1, 0},
    {0, 1, 0}
};

Expected output:
std::vector<std::vector<long long>> expected = {
    {0, 0, 0},
    {1, 1, 1},
    {0, 0, 0}
};
Input:
long[][] grid = new long[][] {
    new long[] {0, 1, 0},
    new long[] {0, 1, 0},
    new long[] {0, 1, 0}
};

Expected output:
long[][] expected = new long[][] {
    new long[] {0, 0, 0},
    new long[] {1, 1, 1},
    new long[] {0, 0, 0}
};

Explanation

The vertical "blinker" turns horizontal: the center survives and its left and right neighbors are born, filling the middle row.

Example 2
Input:
grid = [
    [1, 1],
    [1, 1]
]

Expected output:
expected = [
    [1, 1],
    [1, 1]
]
Input:
std::vector<std::vector<long long>> grid = {
    {1, 1},
    {1, 1}
};

Expected output:
std::vector<std::vector<long long>> expected = {
    {1, 1},
    {1, 1}
};
Input:
long[][] grid = new long[][] {
    new long[] {1, 1},
    new long[] {1, 1}
};

Expected output:
long[][] expected = new long[][] {
    new long[] {1, 1},
    new long[] {1, 1}
};

Explanation

Every cell of the 2×2 block has 3 neighbors, so the block stays the same.

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.