CAtoms

Hace tiempo, experimentando con autómatas celulares (usando un programejo casero) encontré uno bastante interesante que bauticé CAtoms (por Cellular Atoms) porque produce estructuras con núcleos más o menos estáticos rodeados por nubes de actividad frenética.

Las reglas son de tipo totalístico: cada celda tiene, en cada instante, uno de dos estados posibles: encendida o apagada. El estado de una celda y de sus 24 vecinas (dispuestas en un cuadrado de 5×5 celdas a su alrededor) en un instante dado determina el estado de dicha celda al instante siguiente.

  • Si la celda está apagada y tiene exactamente 4 vecinas encendidas, al instante siguiente se encenderá.
  • Si la celda está encendida y tiene menos de 8 o más de 15 vecinas encendidas, al instante siguiente se apagará.
  • En cualquier otro caso, su estado no cambiará.

Ignoro si este autómata tiene todas las propiedades algorítmicas interesantes de otros; pero es delicioso observar la evolución de los grupos de núcleos mientras se van creando, destruyendo y lanzando deslizadores unos a otros.

Este es un lanzador de deslizadores (a la izquierda) y un deslizador recientemente creado (a la derecha):

El deslizador de la imagen se mueve a la mitad de la velocidad de la luz, es decir, se mueve una casilla cada 2 instantes.

Aquí vemos una molécula con varios núcleos (que son los grupos de 3×3 o 3×4 celdas encendidas):

Las moléculas no se mantienen estables, sino que van creando átomos a su alrededor, mientras que los interiores van muriendo. Pueden llegar a formarse estructuras muy grandes y dinámicas.

Estoy mejorando el programa que hice para el estudio de autómatas para que sea más amigable; cuando lo tenga listo lo pondré a disposición de los que quieran usarlo.

Si alguien escribe un programa (o modifica alguno existente) que pueda ejecutar este autómata, no dude en avisarme y lo recomendaré.

4 comentarios para “CAtoms”

  1. Daniel Turambar Dice:

    ¡Qué bueno!, e mis tiempos universitarios tuve una prácitca de programación el primer curso bastante similar, aunque creo que se miraban vecindarios de 3×3, pero el resultado era interesante. Ver las células crecer, estabilizarse o desintegrarse… Vaya que recuerdos. Gracias. Si lo encuentro te lo envío por si te sirve de algo.

  2. Carlos Luna Dice:

    Yo me veo con ánimos de programarlo en Python. De hecho es muy fácil programarlo en Python. El problema es que no se hacer que quede bonito, ni que el input de datos inicial sea sencillo.

  3. Marcos Dice:

    Mi implementación está en C++, por lo que pienso que quizá sea más rápida que la de Python. Sin embargo, la interface que hice es muy fea aún… Así que no dudes en enviarme lo que hagas, quizá entre los dos podamos hacer algo lindo y rápido.

  4. Daniel Turambar Dice:

    Hola, lo siento encontré los archivos en un diskete (sí, en uno de 3 y medio, hazte una idea del tiempo que hace, jeje) y claro el tiempo no pasa en balde, y el mal almacenamiento tampoco. Los ficheros estaban corruptos. Lo siento,

Escribe un comentario