Enunciado de la Práctica del Juego de la Vida en C
2011/2012
Práctica I: El Juego de la Vida
Definición del Problema
Queremos simular una sociedad de organismos vivos, llamados células. Todas las células
son idénticas, y coexisten en un tablero denominado espacio celular. Cada célula es capaz de
percibir a sus 8 células vecinas en el espacio celular. Por ejemplo, en la siguiente figura, la célula
C es capaz depercibir a sus 8 vecinos denotados por V:
V
V
V
V
C
V
V
V
V
El espacio celular no es circular, en todas direcciones. Por ejemplo, en la figura anterior los
vecinos de C son 8. En cambio, en la figura siguiente los vecinos de C son sólo 3.
V
V
C
V
V
V
V
V
V
A lo largo del tiempo, una célula puede estar en uno de dos posibles estados: Viva oMuerta. La población de celdas va cambiando en el tiempo según ciertas reglas bien definidas.
Estas reglas determinan el estado que tendrán las células en la siguiente generación. Las reglas
son:
Supervivencia: Si una célula está rodeada por dos o tres células vivas en la generación
actual, permanecerá viva en la siguiente generación.
Nacimiento: Si una célula muerta está rodeada porexactamente tres células vivas en la
generación actual, nacerá (estará viva) en la siguiente generación.
Muerte por soledad: Si una célula no tiene ningún vecino vivo, o si tiene sólo uno en la
generación actual, morirá de soledad por lo que estará muerta en la siguiente generación.
I.E.S. Pradolongo – Departamento de Informática 1
Programación
2011/2012
Muerte porsobrepoblación: Si una célula tiene cuatro o más vecinos vivos en la
generación actual, morirá a causa de la sobrepoblación por lo que estará muerta en la
siguiente generación.
Para conocer el estado de la población en la siguiente generación, deben aplicarse estas
reglas en forma simultánea a todas las células del espacio, mirando únicamente el estado actual,
es decir, mirando el estado de las células enla generación actual.
Un autómata celular es un sistema que modela el comportamiento de un espacio celular
aplicando reglas como las anteriores, generación por generación. Las reglas dadas anteriormente
pueden resumirse de la siguiente manera:
Toda celda viva con dos o tres vecinos vivos, sobrevive.
Toda celda muere si, estando viva, tiene en la generación actual cuatro o más vecinosvivos, o uno o menos vecinos vivos.
Una celda muerta nace cuando tiene exactamente tres vecinos vivos.
La forma más apropiada para representar el espacio celular en un programa, es mediante un
arreglo de dos dimensiones, o matriz. Para poder determinar el estado de la siguiente generación,
se requiere una segunda matriz, pues no se puede perder el estado actual mientras se está
calculando elsiguiente. Para trabajar con varias generaciones pueden utilizarse las mismas dos
matrices.
Trabajo a Desarrollar
Escribir un programa en C que implemente un autómata celular para simular el
comportamiento de un espacio celular particular. La configuración original del espacio, es decir,
cuáles celdas están vivas, debe ingresarse por teclado de la manera que mejor considere.
El espaciocelular tendrá un tamaño no mayor que 100 por 100. Una vez que haya leído la
configuración de la células, el programa debe interrogar al usuario para determinar la cantidad
de generaciones que se quieren procesar. Como resultado el programa debe mostrar por pantalla
la evolución, generación por generación del espacio celular.
Cómo abordar el problema:
1. Estudiar detenidamente el problema yanalizar una forma de resolverlo. Una idea es
definir un programa principal que defina la estructura del programa, y una serie de
funciones, que realicen el trabajo. Pensar en qué funciones podría construir considerando
I.E.S. Pradolongo – Departamento de Informática 2
Programación
2011/2012
la tarea que cada una de ella va a llevar a cabo, qué parámetros va a recibir y qué...
Regístrate para leer el documento completo.