Игра жизни и усталости Стьюи очень похожа на более известную игру жизни Конвея .
Вселенная Игры жизни и усталости Стьюи (GoLF) представляет собой бесконечную двумерную ортогональную сетку квадратных ячеек, каждая из которых находится в одном из трех возможных состояний: живое, мертвое или уставшее. Каждая ячейка взаимодействует со своими восемью соседями, которые являются соседями по горизонтали, вертикали или диагонали. На каждом шаге по времени происходят следующие переходы:
- Любая живая клетка с менее чем двумя живыми соседями умирает, как если бы она была вызвана недостаточным населением.
- Любая живая клетка с двумя или тремя живыми соседями живет для следующего поколения.
- Любая живая клетка с более чем тремя живыми соседями умирает, как если бы она была перенаселена.
- Любая мертвая клетка с ровно тремя живыми соседями становится живой клеткой, как будто путем размножения.
- Любая клетка, которая была жива два поколения подряд, умирает, как будто от усталости. Он не может снова пробудиться к жизни до следующего поколения
- Любая ячейка, которая находится за границей входной сетки, мертва, как если бы она упала со скалы.
Вызов:
Ваша задача состоит в том, чтобы взять сетку измерений n-by-m, представляющую начальное состояние GoLF, и целое число p , и вывести состояние игры через p поколений.
Правила:
- Форматы ввода и вывода являются необязательными, но сетки ввода / вывода должны иметь одинаковое представление
- Вы можете выбрать любые печатные символы для представления живых и мертвых клеток (я буду использовать
1
для живых клеток и0
для мертвых клеток). - Вы можете выбрать, если у вас есть 0 или 1-индексированный. В примерах
p=1
означает состояние после одного шага. - Самый короткий код на каждом языке выигрывает
- Встроенная функция для сотовой автоматизации допускается
Тестовые случаи:
В примерах я включил только входную сетку во входную, а не p . Я предоставил выходные данные для различных p- значений. Вы должны выводить только сетку, которая идет с заданным входом p .
Input:
0 0 0 0 0
0 0 1 0 0
0 0 1 0 0
0 0 1 0 0
0 0 0 0 0
--- Output ---
p = 1
0 0 0 0 0
0 0 0 0 0
0 1 1 1 0
0 0 0 0 0
0 0 0 0 0
p = 2
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
p = 3 -> All dead
---
Input:
0 1 0 0 0 0
0 0 1 0 0 0
1 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
--- Output ---
p = 1
0 0 0 0 0 0
1 0 1 0 0 0
0 1 1 0 0 0
0 1 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
p = 2
0 0 0 0 0 0
0 0 0 0 0 0
1 0 0 0 0 0
0 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
p = 3
0 0 0 0 0 0
0 0 0 0 0 0
0 1 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
p = 4 -> All dead
Input
0 1 1 0 1 1 0
1 1 0 1 1 1 1
0 1 0 0 0 1 0
0 0 0 1 1 0 1
1 0 0 1 0 1 1
0 0 1 1 0 1 1
1 1 0 0 0 0 1
--- Output ---
p = 1
1 1 1 0 0 0 1
1 0 0 1 0 0 1
1 1 0 0 0 0 0
0 0 1 1 0 0 1
0 0 0 0 0 0 0
1 0 1 1 0 0 0
0 1 1 0 0 1 1
p = 2
1 0 0 0 0 0 0
0 0 0 0 0 0 0
1 0 0 1 0 0 0
0 1 1 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
0 0 1 1 0 0 0
p = 3
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 1 0 0 0 0
1 1 0 0 0 0 0
0 1 1 0 0 0 0
0 0 1 0 0 0 0
0 0 0 0 0 0 0
p = 4
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 0 0
1 0 0 0 0 0 0
1 0 1 0 0 0 0
0 1 1 0 0 0 0
0 0 0 0 0 0 0
p = 5
0 0 0 0 0 0 0
0 1 0 0 0 0 0
1 0 0 0 0 0 0
0 0 1 0 0 0 0
1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
p = 6
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 0 0 0
0 1 0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
p = 7
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
p = 8
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
p = 9 -> All dead
Да, я знаю, что все начальные семена не закончатся тем, что все клетки будут мертвыми.