Pide a expertos que escriban programas en C - Game of Life
#includelt;iostreamgt;
usando?namespace?std;
#includelt;time.hgt;
#define?M ?70
#define?N?20
void?mShow(int?a[N 2][M 2])
{?int?i , j;
for?(?i=0;ilt;N;i ,coutlt;lt;endl?)
for?(?j=0;jlt;M; j ?)
si?(?a[i 1][j 1]?)?coutlt;lt;'*';
else?coutlt;lt;'.' ;
//coutlt;lt;(?a[i 1][j 1]?)?('*'): ('?');
} p>
int?mJduge(int?a[N 2][M 2])
{?int?i,j,k,s,*p[9],b[N] [M];
para?(?i=0;ilt;N;i?)
{
p[0]=p[4] =p[5]=amp;a[i 1][1];?p[4]--;?p[5];//?1?2?3
p[1] =p[2]=p[3]=p[0]-M-2;?p[1]--;?p[3];?/?//?4?0?5
p[6]=p[7]=p[8]=p[0] M 2;?p[6]--;?p[8] //6?7?8
para?(?j=0;jlt;M;j ?)
{?para?(?k=1, s=0;klt;9;k ?)?s =(*p [k]);
b[i][j]=*p[0];
si?(?sgt;=3?)?b[i][j ]=1;
else?if?(?slt;2?)?b[i][j]=0;
for?(?k=0;klt; 9;k ?)?p[k] ;
}
}
for?(?i=0, s=1; ilt; N; i ?)?para?(?j=0;jlt;M;j ?)?{?a[i 1][j 1]=b[i][j];?si?(?b[i][ j]==0?)?s=0;?}
return?s;
}
void?main()
{
int?a[N 2][M 2], b[N][M], *p[9];
int?t, i, j ,k;
para?(?i=0;ilt;N 2;i ?)?para?(?j=0;jlt;M 2;j ?)?a[i][j ]=0;
srand((unsigned?int)time(NULL));
para?(?i=0;ilt;N;i ?)?para?( ?j=0;jlt;M;j ?)?{?k=rand()100;?a[i 1][j 1]=(?kgt;=77?)?(1): (0); ?}
coutlt;lt;"--------?T=0--------"lt;lt;endl;?mShow(a);
k=0;?t=0;
mientras?(?!k?)
{?k=mJduge(a)
;?t ;
coutlt;lt;"--------?T="lt;lt;tlt;lt;"?--------"lt;lt ;endl;?mShow(a);
}
}
La matriz a es un círculo más grande que la matriz real, y el círculo más grande siempre es igual a 0, como límite, para evitar que la matriz cruce el límite al calcular 8 datos conectados
La matriz b se utiliza para calcular el resultado esta vez. Una vez completado el cálculo, copie y sobrescriba. parte media de la matriz a como resultado
Principal El programa continúa hasta que todos los espacios están ocupados por células vivas y se detiene
Los siguientes son algunos resultados de las pruebas de configuración de M=10 y N =5