Игра жизни и усталости Стьюи очень похожа на более известную игру жизни Конвея .
Вселенная Игры жизни и усталости Стьюи (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
Да, я знаю, что все начальные семена не закончатся тем, что все клетки будут мертвыми.
источник
Ответы:
MATL ,
343025 байтов5 байтов удалено благодаря предложению @CalculatorFeline !
Попробуйте онлайн!
Входы - это матрица и число. Матрица используется в
;
качестве разделителя строк. Матрицы для трех тестовых случаев вводятся какобъяснение
источник
3Y6
более подробно? Также, если средний элемент ядра был.5
, вы можете проверить CGOL с помощью just2<value<4
. Может помочь.5<=value<=7
. Что касается3Y6
, это просто предопределенный литерал. Там также1Y6
, который является 4-окрестностиAPL (Dyalog Classic 16.0) , 59 байт
Попробуйте онлайн! (эмулируется на Classic 15.0)
APL (Dyalog Unicode 16.0) , 85 байт
Попробуйте онлайн! (эмулируется в Unicode 15.0)
Запрашивает сетку, а затем для р . Печатает новую сетку через p поколений.
Обратите внимание, что здесь используется новый
⌺
(Stencil) примитив, который не включен в набор символов Classic, следовательно, более короткая версия и версия с меньшим количеством байтов.Объяснение, чтобы следовать ...
источник
display
функции здесь .Golly RuleLoader, 295 байт
Входная сетка должна быть вставлена, границы находятся в руленном имени (например,
5
*3
естьY:P5,3
), нажмите пробел для продвижения.источник
Java 8, 333 байта
Объяснение:
источник