Esta publicación está ligeramente inspirada en esta publicación de mathoverflow .
Un Vanisher es cualquier patrón en el Juego de la vida de Conway que desaparece por completo después de un paso. Por ejemplo, el siguiente patrón es un Vanisher talla 9.
Una propiedad interesante de Vanishers es que cualquier patrón puede desaparecer simplemente agregando más células vivas. Por ejemplo, el siguiente patrón puede estar completamente encerrado en un patrón de fuga como este
Sin embargo, podemos convertir ese patrón en un Vanisher agregando aún menos células vivas.
Su tarea es escribir un programa que haga esta tarea por nosotros. Se le da un patrón como entrada para encontrar y generar un patrón de fuga que contiene la entrada. No necesariamente tiene que encontrar el patrón óptimo, solo un patrón que funcione.
Puntuación
Para calificar su programa, deberá ejecutarlo en todos los polyplets de tamaño 6 (no contando dos casos simétricamente equivalentes) Aquí hay un pastebin que contiene cada polyplet en su propia línea. Debería haber 524 de ellos en total. Se representan como una lista de seis coordenadas ( (x,y)
tuplas), cada una de las cuales es la ubicación de una célula viva.
Su puntaje será el número total de nuevas celdas agregadas para convertir todos estos polyplets en Vanishers.
Corbatas
En el caso de los vínculos, proporcionaré una lista de los polyplets de tamaño 7 para los programas que se ejecutarán.
IO
Me gustaría que IO sea bastante flexible, puede tomar entradas y salidas en formatos razonables, sin embargo, es probable que desee tomar entradas en el mismo formato que los datos de entrada sin formato que proporcioné. Su formato debe ser coherente en varias ejecuciones.
Sincronización
Su programa debe ejecutarse en un tiempo razonable (aproximadamente <1 día) en una máquina razonable. Realmente no voy a hacer cumplir demasiado esto, pero preferiría que todos jugáramos bien.
fuente
Respuestas:
Python + Z3 , puntaje = 3647
Se ejecuta en 14 segundos en mi sistema de ocho núcleos.
Salida completa
fuente
+
desconectados de la forma principal en algunos casos, pero parece que son necesarios para evitar el desove de nuevas células. ¿Son estas soluciones óptimas?z3.Or
lugar de vainillaa or b
? ¿Es puramente rendimiento o tiene una funcionalidad diferente?