jueves, enero 05, 2006

El Juego de la Vida

No se lleven a confusión. No es repartir pizzas hasta los 65 años, y luego ver la tele hasta morirse.

El Juego de la vida es un autómata celular. No se asusten, solo es un tipo de algoritmo, que se basa en unas reglas muy sencillitas, pero que sorprendentemente generan como "tejidos celulares" que crecen y evolucionan como si estuvieran vivos. Como la vida: algo tan minimo y sencillo como la celula, mira el lío que ha montado sobre la Tierra.
Hay muchos algoritmos de autómatas celulares, pero quizá el más popular sea el Conway's Game of Life


dejenme explicarles: tienen ustedes una rejilla bidimensional muy grande.
Ponen unas pocas piezas negras en algunas de las casillas. Ese es el patrón inicial:


y ahora se aplican las siguientes reglas para saber qué pieza negra, vive, muere, o que nuevas piezas nacen:
1-Una pieza negra muere de soledad si tiene 0 ó 1 vecinos, o de saturación si tiene 4 ó màs.
2-Nace una nueva pieza en aquella casilla vacía que tenga exactamente 3 vecinos.

Se entiende por vecino las casillas contiguas a la estudiada. Incluso en diagonal.

Y eso es todo.
Cómo unas reglas tan estúpidas han generado tanto papel de estudios es la maravilla del algoritmo.

Según el patrón inicial, las estructuras crecen, se expanden, y llegado el momento, empiezan a agotarse, a desaparecer, a estancarse en estructuras no evolutivas. Como la vida misma.
Algunas estructuras estancas:


Otras, siendo estancas, "avanzan infinitamente" explorando nuevas tierras:

¿No es apasionante? A mi me lo pareció a los 10 años, cuando cayó en mis manos uno de los primeros libros de videojuegos de la historia:

Basic Computer Games -microcomputer edition- Workman Publishing 1979

Este libro es una delicia, por su candidez. Contiene listados BASIC de videojuegos de texto puro, de lo más simple y tonto que se puedan imaginar. Lo conservo como una joya, como una obra de arte... En él encontré el listado del Conway's Game of Life, lo pasé a mi micro ordenador MO5, y pasé horas y horas viendo evolucionar las estructuras (con aquellos procesadores, ver evolucionar una estructura eran varias horas).
Les voy a poner las páginas originales del libro en el que aparece el listado BASIC del juego. Los de mi edad disfrutarán leyendo este prehistórico código:



Ahora, han pasado mucho tiempo, los ordenadores son más potentes, y los lenguajes de programación en poco se parecen al BASIC.
Como pasatiempo, he querido implementar el Conway's Game of Life, en un lenguaje de programación que se está haciendo muy popular para programar pequeños juegos 3D. Se llama Quest 3D, es lo que llamamos un motor de realidad virtual, y tiene una curiosa forma de lenguaje de programación.
En esta imagen un poco grande, pueden ustedes ver el listado del algoritmo que he implementado en Quest3D, que hace exactamente lo mismo que el de BASIC:

Se fijan? han pasado 35 años, y las cosas se han complicado sobremanera, para hacer lo mismo!
Y antes a los informáticos les pagaban lo que pidieran!
Si les pica la curiosodad sobre Quest3D y sobre este algoritmo del Conway's Game of life, lo explico todo en detalle en mi web hagaloustedmismo.

Pero si la vida celular les ha aburrido, y lo que quieren es jugar a la vida humana, les recomiendo que juegen al
Jones in the fast Lane

Un antiguo juego de Sierra, en que te ganabas la vida día a día, para basicamente sobrevivir a base de hamburguesas.

¡Quién fuera celula!

Powered by Blogger