Cada célula en un autómata celular realista solo necesita un bit para representarla, ya que solo puede estar viva o muerta. Eso significa que solo hay dos colores; bastante aburrido.
Las imágenes normales tienen 24 bits por píxel (8 en cada uno de RGB). ¡Esto significa que en una imagen normal con píxeles como celdas puede simular 24 juegos realistas a la vez!
Reto
Su tarea es escribir un programa que aplicará una generación de las reglas de un autómata celular realista a una imagen de profundidad de 24 bits (en cualquier formato conocido que desee), y generará la imagen resultante.
Cada una de las 24 capas utilizará el mismo conjunto de reglas realista, estrictamente dentro de su propia capa. Las 24 capas no interactúan entre sí.
también
- Los ceros son células muertas y los unos son células vivas.
- Las condiciones de contorno son periódicas (formando un toro).
- Cualquier dimensión de imagen debería funcionar.
De entrada y salida
Su programa necesita tomar 3 argumentos, a través de stdin o línea de comando (o el equivalente más cercano de su idioma):
- El nombre del archivo de imagen de entrada.
- Una cadena de los dígitos 0 a 8 en orden creciente que denota cuando nacen nuevas celdas:
- Si el dígito d está en la cuerda y luego las células muertas cobran vida cuando tienen d vecinos de vida.
- Ejemplo: vida
3
normal : las células muertas con exactamente 3 vecinos vivos cobran vida.
- Una cadena de los dígitos del 0 al 8 en orden creciente que indica cuándo sobreviven las celdas existentes:
- Si el dígito d está en la cadena, las células vivas con d vecinos vivos sobreviven hasta la próxima generación, de lo contrario mueren.
- Ejemplo:
23
es vida normal: solo las celdas con exactamente 2 o 3 vecinos sobreviven a la siguiente ronda.
Tenga en cuenta que siempre se usa el vecindario de Moore . Lee esto o esto para obtener más información sobre lo que define con precisión un autómata realista y muchos conjuntos de reglas interesantes.
La imagen de salida de 1 generación posterior debe mostrarse o guardarse como out.png
( bmp
o lo que sea).
Sumisión
El código más corto en bytes gana.
Usted está obligado a incluir al menos una imagen de prueba y sus tres generaciones posteriores inmediatas para algunos conjunto de reglas no trivial. Usa tu avatar y las reglas de vida normales si no puedes pensar en algo mejor.
Si lo desea, puede usar esta pistola de planeador Gosper donde los únicos bits vivos están en la capa verde 128 (solo es seguro que funcione en la vida normal):
Publicar secuencias interesantes o incluso animaciones es muy recomendable.
fuente
Respuestas:
MATLAB: 275
Mi favorito de los parámetros que probé es
45678
,568
que luego de una desintegración gradual resulta en un cielo de estrellas centelleantes. Esta imagen representa "la desintegración de la persistencia de la memoria".Código de producción de gif sin golf (acepta PNG sin extensión):
Código de golf que acepta un nombre de archivo completo (que puede ser GIF, JPEG y quizás otras cosas) y escribe en
out.png
:Un hecho previamente descubierto es que los parámetros
12
,1
se pueden usar para generar una alfombra-como fractal de Sierpinski. Aquí hay uno con un punto de inicio aleatorio en cada bit:fuente
Mathematica, 359
Estoy tomando datos de las instrucciones de cadena en el orden (1) reglas de nacimiento, (2) reglas de supervivencia, (3) nombre de archivo, y estoy mostrando el resultado directamente en Mathematica.
Esto debería ser capaz de manejar los formatos más populares, siempre que el archivo tenga una profundidad de 24 bits.
Aquí hay una versión un tanto descuidada:
Aquí hay dos ejemplos que usan el avatar de Rainbolt :
20 generaciones usando el juego estándar de la vida
[3,23]
:20 generaciones usando
[456,34567]
:Y aquí hay un GIF de las primeras 200 generaciones de la última regla. El GIF omite cada tercer cuadro, porque de lo contrario no podría comprimirlo por debajo de 2 MB:
fuente
Pitón 2, 427
Para aquellos que no tienen Mathematica;)
Solicita el nombre de archivo, luego los casos de nacimiento y luego los casos de supervivencia. Entonces, para las reglas de la vida normal, puede ingresar
test.bmp
, entonces3
, luego23
(sin comillas ni nada necesario).Usé el formato de cadena para indexar y recombinar los bits de color, aunque me temo que probablemente no sea óptimo.
Tenga en cuenta que es bastante lento.
Ejemplo
Alta vida y gran mezcla de arte, ¿verdad? (Regla
36
/23
.)Original / Generación 1
Generación 2 / Generación 3
fuente
Java, 1085 bytes
Ejemplos (regla 368/245):
Gen 0:
Gen 1:
Gen 2:
Gen 3:
Gen 4:
fuente