Problem
Original anzeigen (Englisch)Jede Zelle ist lebendig (1) oder tot (0) und hat bis zu 8 Nachbarn. In der nächsten Generation überlebt eine lebendige Zelle mit 2 oder 3 lebendigen Nachbarn, und eine tote Zelle wird mit genau 3 lebendigen Nachbarn lebendig. Zellen außerhalb des Gitters gelten als tot. Alle Zellen werden gleichzeitig aktualisiert.
Implementiere next_generation(grid).
Eingabe
grid: Ein rechteckiges Gitter aus 0 und 1.
Ausgabe
Gib die nächste Generation zurück.
Einschränkungen
0 ≤ Zeilen, Spalten ≤ 200
Beispiele
Eingabe:
grid = [
[0, 1, 0],
[0, 1, 0],
[0, 1, 0]
]
Erwartete Ausgabe:
expected = [
[0, 0, 0],
[1, 1, 1],
[0, 0, 0]
]
Eingabe:
std::vector<std::vector<long long>> grid = {
{0, 1, 0},
{0, 1, 0},
{0, 1, 0}
};
Erwartete Ausgabe:
std::vector<std::vector<long long>> expected = {
{0, 0, 0},
{1, 1, 1},
{0, 0, 0}
};
Eingabe:
long[][] grid = new long[][] {
new long[] {0, 1, 0},
new long[] {0, 1, 0},
new long[] {0, 1, 0}
};
Erwartete Ausgabe:
long[][] expected = new long[][] {
new long[] {0, 0, 0},
new long[] {1, 1, 1},
new long[] {0, 0, 0}
};
Erläuterung
Der vertikale "Blinker" wird horizontal: Die mittlere Zelle überlebt und ihre linken und rechten Nachbarn werden geboren, sodass die mittlere Reihe gefüllt wird.
Eingabe:
grid = [
[1, 1],
[1, 1]
]
Erwartete Ausgabe:
expected = [
[1, 1],
[1, 1]
]
Eingabe:
std::vector<std::vector<long long>> grid = {
{1, 1},
{1, 1}
};
Erwartete Ausgabe:
std::vector<std::vector<long long>> expected = {
{1, 1},
{1, 1}
};
Eingabe:
long[][] grid = new long[][] {
new long[] {1, 1},
new long[] {1, 1}
};
Erwartete Ausgabe:
long[][] expected = new long[][] {
new long[] {1, 1},
new long[] {1, 1}
};
Erläuterung
Jede Zelle des 2×2-Blocks hat 3 Nachbarn, daher bleibt der Block unverändert.
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.