Por @Alvy — 9 de enero de 2022

Conway's Game of Life

Está versión del Juego de la vida, llamada simplemente Game of Life de alguien que firma como Copy está escrita en JavaScript, de modo que se puede ejecutar directamente desde el navegador. En la parte de izquierda hay botones para centrar y encuadrar la imagen, hacer zoom o desplazarla, algo que también se puede hacer con el ratón. Es una forma rápida de explorar el autómata celular más famoso de la historia.

Resulta bastante rápida y cómoda de utilizar: los botones de la parte superior sirven para comenzar la simulación, rebobinar, avanzar paso a paso, etcétera y luego se pueden importar o exportar configuraciones predeterminadas, así como generar una configuración inicial aleatoria o usar una extensa librería de patrones, que además incluyen explicaciones interesantes.

Algo interesante es que utiliza un algoritmo llamado Hashlife, que permite acelerar enormemente los cálculos del que por otro lado es un algoritmo. El asunto tan solo se complican por el hecho de que el mapa crezca y crezca, aumentando la cantidad de celdas que hay que recalcular, examinando las celdas vecinas. En principio el mapa es infinito y crece a medida que se expanden las celdas «vivas» en el juego.

Hashlife emplea una técnica llamada memoización que es un método de optimización similar a la de la memoria caché pero para cálculos: básicamente una vez que se realiza un cálculo (por ejemplo: en qué se convierte esta región de 8×8) se guarda en memoria y «recuerda», de modo que si se vuelve a pedir el mismo cálculo se ofrece directamente el resultado y no hay que hacer el cálculo completo otra vez. La cantidad de datos almacenados depende del tamaño del mapa, su complejidad –las zonas guardadas se examinan mediante funciones hash– y el número de generaciones que se quieran anticipar; por lo visto resulta tremendamente efectivo.

El juego y su interesante implementación se puede examinar a partir del código en Github: Life, para aprender de él o hacer modificaciones.

Relacionado:

Compartir en Flipboard Publicar / Tuitear Publicar