Su tarea es construir una simulación de Game of Life que represente un reloj digital, que satisfaga las siguientes propiedades:
El reloj muestra las horas y minutos en decimal (p
12:00
. Ej .3:59
,7:24
) Con un estado diferente para cada uno de los 1,440 minutos del día: las horas irán de 0 a 23 o de 1 a 12 con un indicador de PM.El patrón es periódico, y el estado gira sin ninguna interacción externa.
Los minutos se actualizan a intervalos regulares: de un cambio de minuto a otro lleva la misma cantidad de generaciones.
Un espectador anónimo puede decir de un vistazo que se supone que la pantalla es un reloj digital. En particular, esto implica:
Los dígitos son visibles y claramente distinguibles. Debe poder decir con certeza de un vistazo a qué hora se muestra.
Los dígitos se actualizan en su lugar. Cada nuevo número aparece en el mismo lugar que el número anterior, y hay poco o ningún movimiento de los cuadros delimitadores de los dígitos. (En particular, un dígito no contiene 10 dígitos diferentes en diferentes lugares que se descubren cada vez que cambian los dígitos).
Los dígitos aparecen uno al lado del otro, sin una cantidad excesiva de espacio entre ellos.
Su programa se puntuará en los siguientes aspectos, en orden (con criterios más bajos que actúen como desempate para criterios más altos):
Tamaño del cuadro delimitador: gana el cuadro rectangular con el área más pequeña que contiene completamente la solución dada.
Ejecución más rápida: gana la menor cantidad de generaciones para avanzar un minuto.
Recuento inicial de células vivas: el recuento más pequeño gana.
Primero en publicar: la publicación anterior gana.
fuente
Respuestas:
11,520 generaciones por cuenta de reloj / 10,016 x 6,796 caja / 244,596 cuenta de pop
Ahí tienes ... Fue divertido.
Bueno, el diseño ciertamente no es óptimo. Ni desde el punto de vista del cuadro delimitador (esos dígitos de 7 segmentos son enormes ), ni desde el recuento de población inicial (hay algunas cosas inútiles, y algunas cosas que ciertamente podrían simplificarse), y la velocidad de ejecución, bueno ... yo 'No estoy seguro.
Pero, oye, es hermoso. Mira:
¡Ejecutarlo!
Obtén el diseño de esta esencia . Copie todo el texto del archivo en el portapapeles.
Nuevo : aquí hay una versión con indicadores AM y PM para los exigentes.
Vaya al simulador de vida en línea JavaScript Conway . Haga clic en importar , pegue el texto del diseño. Deberías ver el diseño. Luego, vaya a la configuración y configure el paso de generación a 512, o algo alrededor de esas líneas, o tendrá que esperar para siempre para ver la actualización de la pantalla del reloj.
Haga clic en ejecutar , espere un poco y ¡sorpréndase!
Enlace directo a la versión en el navegador.
Tenga en cuenta que el único algoritmo que hace que este gran diseño sea utilizable es hashlife. Pero con esto, puede lograr que todo el reloj se ajuste en segundos. Con otros algoritmos, no es práctico incluso ver cambiar la hora.
Cómo funciona
Utiliza tecnología p30. Solo cosas básicas, planeadores y naves espaciales livianas. Básicamente, el diseño va de arriba hacia abajo:
De todos modos, en realidad no hay nada extraordinario en este diseño. No se han descubierto reacciones sorprendentes en este proceso, y no hay combinaciones realmente inteligentes que nadie haya pensado antes. Solo fragmentos tomados aquí y allá y juntos (y ni siquiera estoy seguro de haberlo hecho de la manera "correcta", en realidad era completamente nuevo en esto). Sin embargo, requirió mucha paciencia. Hacer que todos esos planeadores subieran en el momento correcto en la posición correcta fue un rasguño en la cabeza.
Posibles optimizaciones:
fuente