5246. Следующее поколение игры «Жизнь»
Medium
2 решили
Дана прямоугольная таблица
Посчитайте следующее поколение и верните таблицу того же размера (столько же строк и столбцов).
Соседи клетки — все восемь клеток вокруг, включая диагонали. Клеток за краем поля нет: у угловой клетки всего 3 соседа, у клетки на стороне — 5.
Пусть у клетки
Пример одного шага (это первый пример ниже):
board из нулей и единиц — текущее поколение игры «Жизнь» Конвея. 1 означает живую клетку, 0 — мёртвую.Посчитайте следующее поколение и верните таблицу того же размера (столько же строк и столбцов).
Соседи клетки — все восемь клеток вокруг, включая диагонали. Клеток за краем поля нет: у угловой клетки всего 3 соседа, у клетки на стороне — 5.
соседи клетки *: . . . . * . . . .Все клетки меняются одновременно: новое значение считается только по текущему поколению. Нельзя идти по таблице и сразу перезаписывать клетку — соседи ещё должны видеть старое состояние.
Пусть у клетки
k живых соседей:- живая и
k < 2→ умирает (мало соседей); - живая и
k = 2илиk = 3→ остаётся живой; - живая и
k > 3→ умирает (слишком тесно); - мёртвая и
k = 3→ становится живой; - иначе мёртвая остаётся мёртвой.
Пример одного шага (это первый пример ниже):
сейчас следующее 0 1 0 0 0 0 0 0 1 → 1 0 1 1 1 1 0 1 1 0 0 0 0 1 0Верхняя живая клетка имеет только одного живого соседа — умирает. Нижняя средняя мёртвая клетка имеет ровно трёх живых соседей — рождается.
Примеры:
Вход:
[[0, 1, 0], [0, 0, 1], [1, 1, 1], [0, 0, 0]]
Выход:
[[0, 0, 0], [1, 0, 1], [0, 1, 1], [0, 1, 0]]
Объяснение: Сетка 4×3. Смотрим несколько клеток по старому поколению: живая (строка 0, столбец 1) имеет k=1 → умирает; мёртвая (строка 1, столбец 0) имеет k=3 → рождается; живая (строка 2, столбец 1) имеет k=3 → выживает; мёртвая (строка 3, столбец 1) имеет k=3 → рождается. Итог: [[0,0,0],[1,0,1],[0,1,1],[0,1,0]].
Вход:
[[1, 1], [1, 0]]
Выход:
[[1, 1], [1, 1]]
Объяснение: Квадрат 2×2, три живые клетки. У каждой живой 2 или 3 живых соседа — все три выживают. Пустой угол видит ровно трёх живых соседей и рождается. Получается квадрат из четырёх единиц.
Вход:
[[1, 1, 1]]
Выход:
[[0, 1, 0]]
Объяснение: Одна строка из трёх живых. Крайние клетки имеют только одного соседа (за краем поля никого нет) и умирают. Средняя имеет двух соседей и выживает. Над и под строкой клеток нет, поэтому никто не рождается сбоку. Ответ: [[0, 1, 0]].
Ограничения:
1 <= m, n <= 25
board[i][j] равен 0 или 1
Решите эту задачу в браузере
Создайте бесплатный аккаунт — редактор Python, Java, JavaScript и Go, проверка на тестах за секунды.
Комментарии (0)
Зарегистрируйтесь или войдите, чтобы оставить комментарий
Пока нет комментариев. Будьте первым!