Hola mundo de Conway


24

A menudo se dice que todos los programadores deberían poder escribir un programa "hello world" en cualquier lenguaje de programación después de algunas miradas en ese lenguaje (y ordenar rápidamente después de algunas miradas más).

Como el Juego de la vida de Conway se está completando (por lo que califica como un lenguaje de programación de propósito general) , el problema se explica por sí mismo:

Crea un "¡Hola Mundo!" aplicación que utiliza solo el juego de la vida de Conway! La única entrada válida es un estado inicial para el Juego de la vida de Conway, que:

  • no contiene ninguna forma reconocible que se parezca al texto "¡Hola Mundo!"
  • contendrá una forma reconocible similar al texto "¡Hola Mundo!" dentro de un número razonable de ciclos (no debe ejecutarse durante más de un par de minutos en una buena PC; esto permite miles de millones de ciclos y debería ser suficiente)
  • el área donde está el "¡Hola Mundo!" ¡El texto aparecerá debe estar vacío en el estado inicial! (De lo contrario, el problema sería demasiado fácil) Si nadie logra hacerlo, podríamos reducir este requisito a "en su mayoría vacío"

Tanteo:

El ganador se basará en el número de votos a favor en aproximadamente una semana después de la primera presentación válida.

Pautas para votar:

  • una producción más elaborada y hermosa debería valer más
  • La salida que es estable durante muchos ciclos debería valer más de una que se desvanece para ser irreconocible en el próximo ciclo.
  • Una solución encerrada en un ciclo perpetuo, o partir de un patrón interesante es lo que más vale, porque demuestra un diseño inteligente del estado, y no solo un ensayo y error aleatorio con una simulación inversa.

La entrada debe estar en un formato legible por al menos uno de los simuladores notables o un simulador en línea al que se vincula el respondedor. Los enlaces (a una animación o un simulador establecido en el estado inicial) también son aceptados, incluso alentados. Si la salida no es visible dentro de unos pocos ciclos, la entrada debe especificar después de qué ciclo será visible el resultado.


Editar:

Puede haber una ligera tolerancia en la frase que se generará. Puede ser " Hello, World!", " hello, world" " HELLO WORLD!" etc.


¿No debería haber una coma en alguna parte de esa frase?
ardnew

@ardnew: ¿Qué frase?
vsz

la frase que se generará:Hello, world!
ardnew

@ardnew: gracias, edité un apéndice. Deliberadamente dejé un poco de vaguedad, porque finalmente los votantes deciden . Si cree que no violó directamente una de las reglas principales y que a los votantes les gustará su interpretación de los detalles menores, ¡no dude en hacerlo de la forma que desee!
vsz

1
Puede usar mi simulador (importa RLE y texto sin formato). No es bueno para el desarrollo, pero al menos ejecuta grandes patrones arbitrarios a una velocidad decente. También puedo cargar patrones y hacerlos enlazables si así lo solicita
copie el

Respuestas:


50

Mi primer intento de esto, una solución relativamente simple. Dispara un par de barriles planeadores. Cada par de planeadores se convierte en un bloque, que luego forma el texto. Este proceso lleva alrededor de 16000 generaciones (puede configurar un salto de fotograma o usar el botón de superpaso en mi simulador).

Enlace Directo . Muévase con el mouse derecho, haga zoom con la rueda del mouse.

Enlace al archivo .rle (también funciona con Golly)

Imagen del patrón 32: 1:

Imagen del patrón 32: 1


44
Si tiene un navegador compatible con el lienzo y no ve el patrón inicial, aleje la imagen con la rueda de desplazamiento. Me tomó un tiempo resolver eso.
Peter Taylor

¡Excelente! Esperaba que publicaras una solución a este desafío después de haber visto codegolf.stackexchange.com/a/5946/3527 y tu sitio web.
Cristian Lupascu

1
@ w0lf crear un patrón es un tipo de desafío muy diferente a la simulación. Pero sí, me estoy divirtiendo con esto
copia el

2
¡Felicidades! Extraño, que nadie tuvo el coraje de presentar otra solución. En realidad, si no hubiera una solución publicada, habría hecho algo muy similar (planeadores que convergen para formar bloques), aunque mucho más pequeños y menos detallados. ¿Puedo preguntar cómo lo hiciste? ¿Generado con un programa o calculado las posiciones manualmente?
vsz

1
@vsz El patrón se genera a partir de un pequeño script de Python. Creo que una semana podría haber sido una fecha límite corta para algunas personas (es por eso que nadie más lo intentó)
copie el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.