The game of life es un modelo discreto de un automata celular, ideado por el matemático John Horton Conway.
Este modelo se basa en unas pocas reglas que define el comportamiento de las “células” su comportamiento. Reglas:
- Todas las células se actualizan simultáneamente en cada turno.
- Una célula muerta con exactamente 3 células vecinas vivas “nace”.
- Una célula viva con 1 o ningún vecino muere.
- Una célula viva con 4 o más células vivas vecinas muere.
Si la célula está muerta, solo hay 1 forma de que reviva. Si la célula está viva …
Caso 1: La célula está muerta.
- Cuenta cuantas células vecinas están vivas.
- ¿El contador es igual a 3?
- Sí → La célula revive.
- No → Continua con la siguiente célula.
Caso 2: La célula está viva.
- Contar el número de células vecinas vivas.
- ¿El contador es menor o igual a 1?
- Sí → La célula muere.
- No → Revisa la otra condición
- ¿El contador es mayor o igual a 4?
- Sí → La célula muere
- No → La célula se mantiene viva.
Diagrama de flujo para determinar el estado de la célula:
Para poder actualizar el estado de la célula es necesario saber cuántos vecinos vivos adyacentes hay.
Para el proyecto se optó por una lista bidimensional como la estructura de datos. Por lo que para saber cómo acomodar los índices para contar los vecinos. En la imagen se muestra una matriz de 3x3 de cómo se contarían los vecinos de la célula en el centro.
Algo a tener en cuenta antes de continuar es que se decidido que cuando una célula esté en el borde del mapa, las células vecinas serán la que estén al lado opuesto, como se muestra en la imagen:
Pseudocódigo para contar los vecinos:
- Obtener el índice de la fila anterior y la fila siguiente.
- Obtener el índice de la columna anterior y columna siguiente.
- Contar las células vivas en la fila anterior.
- Contar las células vivas en la fila actual.
- Contar las células vivas en la fila siguiente.
- Retornar el total
Diagrama de flujo para obtener los índices de las filas adyacentes.
Diagrama de flujo para obtener los índices de las columnas adyacentes.
Diagrama de flujo para contar las células vecinas.
El análisis y los diagramas de flujo solo se realizaron de lo más importante del proyecto, lo demás fue improvisado sobre la marcha 😋