El juego de la vida
Introducción
Continuando con los autómatas celulares, no podía olvidarme de El juego de la Vida de John Conway. Quizás el más conocido de todos ya que con 4 simples reglas se consigue simular algo parecido a microbios reproduciéndose y muriéndose, con efectos visuales bastante bonitos.
Se dispone de un tablero en el que cada celda puede estar viva o muerta en función de unas reglas sencillas. Este "juego" ha despertado gran interés debido a la versatilidad y a la aparición de patrones que producen efectos sorprendentes (como el pentaminó R o el deslizador).
Algoritmo
Cada célula tiene 8 células "vecinas", que son las que están próximas a ella, incluidas las diagonales. Las células tienen dos estados: están "vivas" o "muertas". El estado de las células evoluciona a lo largo de unidades de tiempo discretas. El estado de todas las células se tiene en cuenta para calcular el estado de las mismas al turno siguiente. Todas las células se actualizan simultáneamente en cada turno, siguiendo estas reglas:
- Cualquier célula con menos de 2 vecinos, muere. Por soledad
- Cualquier célula con 2 o 3 vecinos, sobrevive. Por comunidad
- Cualquier célula con más de 3 vecinos, muere. Por sobrepoblación
- Cualquier célula muerta con exactamente 3 vecinos, nace. Por reproducción
Tipos de patrones
Una vez se plantean estas reglas sobre el tablero, rápidamente se observa como cobra "vida". Se pueden distinguir patrones y figuras concretas, divididas de la siguiente forma:
Vidas estáticas
Patrones que no cambian de forma (ni mueren ni se crean caldas) entre los diferentes ciclos
Osciladores
Patrones que cambian N veces y vuelven a su estado inicial, haciendo que su movimiento sea cíclico, infinito y estático
Naves espaciales
Son un tipo de osciladores que mantienen su forma original pero se desplazan. Son cíclicos e infinitos, pero no estáticos.
Estáticos | Osciladores | Naves | |||
---|---|---|---|---|---|
Bloque | Blinker | Deslizador | |||
Colmena | Rana | Nave pequeña | |||
Hogaza | Faro | Nave mediana | |||
Barco | Pulsar | Name grande | |||
Tina | Period 15 |
Matusalenes
Finalmente nos encontramos con los matusalenes. Son patrones que pueden evolucionar a lo largo de muchos turnos, o generaciones, antes de estabilizarse. El patrón Diehard desaparece después de 130 turnos, mientras que Acorn tarda 5206 turnos en estabilizarse en forma de muchos osciladores, y en ese tiempo genera 13 planeadores.
Fuente: wikipedia.org
Proyecto en Godot
He decidido implementar en Godot un pequeño playground del juego de la vida. Permite dibujar patrones con click izquierdo y borrar con derecho. Puedes ir paso a paso en la generación de ciclos o ejecutar de forma secuencial, así como generar patrones random.
El tablero está montado sobre un "torus". Las celdas generadas en los extremos aparecen en su lado opuesto. Tenéis disponible el código fuente aquí: https://github.com/aikoncwd/Game-of-Life
Espero que os guste!