Этот пост слабо вдохновлен этим постом mathoverflow .
Исчезновение - это любой паттерн в игре жизни Конвея, который полностью исчезает после одного шага. Например, следующий шаблон - Vanisher размера 9.
Интересным свойством Vanishers является то, что любой шаблон можно превратить в исчезающий, просто добавив больше живых клеток. Например, следующий шаблон может быть полностью заключен в исчезающий шаблон, например
Однако мы можем превратить этот паттерн в Vanisher, добавив еще меньше живых клеток.
Ваша задача - написать программу, которая сделает это за нас. Это задается шаблоном в качестве входных данных для поиска и вывода исчезающего шаблона, содержащего входные данные. Вам не обязательно находить оптимальный шаблон, просто шаблон, который работает.
счет
Чтобы оценить вашу программу, вам нужно будет запустить ее на всех полиплетах размера 6 (не считая дважды симметрично эквивалентных случаев). Вот пастбин, содержащий каждый полиплет в отдельной строке. Всего их должно быть 524. Они представлены в виде списка из шести координат ( (x,y)
кортежей), каждая из которых является местоположением живой ячейки.
Ваша оценка будет равна общему количеству добавленных ячеек, чтобы превратить все эти полиплеты в Vanishers.
связи
В случае связей я предоставлю список полиплетов размера 7 для программ, которые будут запущены.
IO
Я хотел бы, чтобы IO был достаточно гибким, вы могли бы вводить и выводить данные в разумных форматах, однако вы, вероятно, захотите получать ввод в том же формате, что и исходные входные данные, которые я предоставил. Ваш формат должен быть одинаковым для нескольких прогонов.
тайминг
Ваша программа должна запускаться в течение разумного периода времени (около 1 дня) на подходящей машине. Я не собираюсь навязывать это слишком сильно, но я бы предпочел, чтобы мы все хорошо играли.
источник
Ответы:
Python + Z3 , оценка = 3647
Работает за 14 секунд на моей восьмиядерной системе.
Полный вывод
источник
+
в некоторых случаях отключаются от основной формы, но кажется, что они необходимы, чтобы избежать появления новых клеток. Являются ли эти решения оптимальными?z3.Or
вместо ванилиa or b
? Это чисто производительность или другой функционал?