Учитывая состояние квадратной сетки Игры Жизни, определите, могла ли она эволюционировать из какого-либо предыдущего состояния или могла быть только создана. То есть, определить, является ли штат «райским садом» .
вход
Квадратная сетка состояний, где 1 означает «живой», а 0 - «мертвый». Вы можете выбрать любые два различимых символа вместо 0 и 1, если хотите.
Длина стороны сетки не будет нулевой, но может быть любым натуральным числом 1 <= N <= 20.
Любая или все ячейки вне входной сетки могут быть живы в этом поколении, и любая или все из них, возможно, были живы в предыдущем поколении. Рассматриваемая вселенная бесконечна, поэтому нет граничных условий. Края входа не являются краями вселенной. В частности, сетка не переносится.
Входные данные могут быть в форме строки с разделителями строк или одной строки. Если вы хотите, вы можете взять длину стороны или площадь сетки в качестве дополнительного ввода (до или после сетки).
Допустимые форматы ввода:
010,101,010
010101010
010
101
010
3 010101010
Выход
«Создан», если нет возможного предыдущего состояния (включая состояния, большие, чем входная сетка), которое привело бы к входному состоянию в следующем поколении.
«Развивается», если существует хотя бы одно возможное предыдущее состояние (включая состояния, большие, чем входная сетка), которое привело бы к входному состоянию в следующем поколении.
При желании вы можете использовать любые две различимые строки или числа вместо «Создано» и «Развито».
Обратите внимание, что возможное предыдущее состояние не обязательно должно отличаться от ввода. Если государство имеет себя в качестве следующего поколения, то оно должно рассматриваться как развитое.
Контрольные примеры
010
101
010 Evolved
0101110100
0010101001
1011100110
0101111101
1001001111
1111001001
1011111010
0110011101
1001010100
0010111010 Created
Созданный контрольный пример взят со страницы игры жизни Ахима Фламменкампа .
Заметка
Спасибо Trichoplax за написание этого задания, и я принял его отсюда
источник
m
-by-n
, если я протестирую все возможные2^(m*n)
начальные состояния, сложность программы будет большой, но она решит проблему, просто проверив, соответствует ли результат вводуОтветы:
Java - 1254 байта - очень плохое решение
Требуется ввод через командную строку.
Что оно делает
Здесь нет хитростей, просто решение грубой силы. Он проходит каждую возможную начальную доску размером X, Y и повторяет ее один раз через алгоритм Game of Life и проверяет ее по входной доске. Это занимает ОЧЕНЬ много времени, так как каждая доска размером x от y имеет 2 ^ (x * y) возможных комбинаций. Потребовалось почти 10 минут, чтобы запустить доску 4х5. Глупо глупо за то, что проще, чем есть.
Если возможно, что это была усовершенствованная доска, она печатает «развитая», а если она не могла быть развита, она печатает «созданная».
источник