Matlab - AYUDA, con trabajo: el juego de la vida

 
Vista:

AYUDA, con trabajo: el juego de la vida

Publicado por Patricia (1 intervención) el 11/12/2011 11:46:17
Hola, pues escribo sto porque me han mandado un trabajo programar el jugo de la vida de conway y nose por donde empezar, algien me podria decir mas o menos los pasos que tengo q hacer? GRACIAS!, aqui dejo el enunciado:


Enunciado
Para este trabajo vamos a seguir un juego conocido como el juego de la vida, dise~nado por John
Horton Conway en 1970. Dada su similitud con la aparicion, desarrollo y desaparicion de sociedades de organismos vivos, pertenece a la categoria de juegos de simulacion, juegos que se asemejan a procesos reales.

El tablero de juego es una malla formada por cuadrados (celulas) que se extiende por el in nito
en todas las direcciones. Cada celula tiene 8 celulas vecinas, que son las que estan proximas a ella,incluso en las diagonales. Las celulas pueden estar vivas o muertas (en el programa que deberas escribir, utilizaremos el 1 para indicar celulas vivas y 0 para celulas muertas). El estado de la malla evoluciona con el tiempo por turnos. Para calcular el estado de un turno, se necesita conocer el estado de todas las celdas en el turno anterior, de forma que todas las celdas se actualizan simultaneamente.

Las leyes de evolucion de Conway son muy simples:
Supervivencia: Las celulas vivas con 2 o 3 vecinos sobreviven a la siguiente generacion.
Muerte: Las celulas vivas con 0 o 1 vecinos mueren aisladas. Las celulas vivas con 4 o mas vecinos mueren por sobrepoblacion.
Nacimientos: Las celulas muertas con exactamente 3 vecinos nacen en el turno siguiente.


Evidentemente, la evolucion de la \vida" dependera del patron inicial con el que se empiece el
juego. A lo largo de este trabajo veremos distintos patrones iniciales que generan vida con unas caracteristicas muy determinadas.
El objetivo de este trabajo es implementar un programa y distintas funciones en Matlab para
realizar simulaciones con el juego de la vida. Para ello, es aconsejable que sigas los pasos que se te indica a continuacion.

1
Primera parte (
Escribe una funcion vecinosFila que reciba como argumento de entrada una matriz (supondremos
que solo contendra ceros y unos) y una posicion de la misma, y devolverla como argumento de salida el numero de vecinos (unos) de la posicion en la propia la. Tienes que evitar los problemas que puedan surgir al pedir posiciones en las columnas del borde de la imagen. Por ejemplo:
% Ejemplo de uso de l a f u n c i o n v e c i n o s F i l a
> A
A =
1 0 1 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
> h = v e c i n o s F i l a (A, [ 1 , 2 ] )
h = 2
> h = v e c i n o s F i l a (A, [ 1 , 3 ] )
h = 0
> h = v e c i n o s F i l a (A, [ 2 , 1 ] )
h = 1


Segunda parte
De forma similar a la funcion vecinosFila, escribe las funciones vecinosArriba y vecinosAbajo
que reciban como argumento de entrada una matriz (supondremos que solo contendra ceros y unos y una posicion de la misma, y devolveran como argumento de salida el numero de vecinos (unos) dela posicion en la la de arriba y abajo, respectivamente. En caso de no existir la la o la columna,debera devolver 0. Por ejemplo:
% Ejemplo de uso de l a f u n c i o n v e c i n o sAr r i b a
> A
A =
1 0 1 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
> h = v e c i n o sAr r i b a (A, [ 2 , 2 ] )
h = 2
> h = v e c i n o sAr r i b a (A, [ 1 , 2 ] )
h = 0


Tercera parte
Escribe una funcion vecinos que reciba como argumento de entrada una matriz (supondremos que solo contendra ceros y unos) y una posicion de la misma, y devolvera como argumento de salida el numero de vecinos (unos) de dicha posicion. Debera utilizar las tres funciones escritas en los ejercicios anteriores. Por ejemplo:
% Ejemplo de uso de l a f u n c i o n v e c i n o s nn > A
A =
1 0 1 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
> h = v e c i n o s (A, [ 1 , 2 ] )
h = 3
h = v e c i n o s (A, [ 1 , 3 ] )
h = 1


Cuarta parte
Escribe una funcion vida que reciba como argumento una matriz de ceros y unos (no hace falta comprobarlo)con el estado inicial de celulas vivas, y devuelva otra matriz con el estado nal, teniendo en cuenta las leyes de evolucion Conway anteriormente comentadas, y realizando llamadas a la funcion vecinos. Fijate en que esta funcion implementa un unico paso del juego de la vida.
Por ejemplo, la funcion debe comportarse como se indica a continuacion, donde se sigue el ejemplode la Figura 1.
% Ejemplo de uso de l a f u n c i o n v i d a
> A = [
0 0 1 0 0
0 0 1 0 0
0 1 0 1 0
0 0 1 0 0
0 0 1 0 0 ] ;
> v i d a (A)
ans =
0 0 0 0 0
0 1 1 1 0
0 1 0 1 0
0 1 1 1 0
0 0 0 0 0


Quinta parte
Escribe un programa juegodelavida.m que lea la con guracion inicial de las celulas de un archivo
de nombre data (utiliza la funcion load), pida al usuario el numero de pasos del juego y los ejecute,
mostrando cada con guracion intermedia con una peque~na pausa (puedes utilizar la funcion pause: busca en la ayuda como usarla).

> j u e g o d e l a v i d a
I n t r o d u c e e l numero de pa sos : 3
==== Co n f i g u r a c i o n i n i c i a l ====
0 0 1 0 0
0 0 1 0 0
0 1 0 1 0
0 0 1 0 0
0 0 1 0 0
==== Paso 1 ====
0 0 0 0 0
0 1 1 1 0
0 1 0 1 0
0 1 1 1 0
0 0 0 0 0
==== Paso 2 ====
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
==== Paso 3 ====
0 0 1 0 0
0 1 1 1 0
1 1 0 1 1
0 1 1 1 0
0 0 1 0 0

Sexta parte
Modi ca el programa juegodelavida.m (crea un programa nuevo de nombre juegodelavidaG.m) para
que, utilizando la funcion imshow muestre el proceso del juego de forma gra ca, de forma que se represente la matriz como una imagen que evolucione en cada paso.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder