Ejemplo n.º 1
0
void generation_suivante_M(int **tab1, int **tab2, int n, int m, int B[9], int S[9]){
    int i, j, k;                                                                            // Compteurs
    for (i = 0; i < n; i++) {                                                               // Parcours du tableau principal
        for (j = 0; j < m; j++) {
            for (k = 0; k < 9; k++) {                                                       // Parcours du tableau pour les regles de naissance ou de survie
                if ((tab1[i][j] == 0) && (B[k] == 1) && (nb_voisins_M(tab1, i, j, n, m) == k)) {         // Si la celleule est morte et que les regles correspondent alors elle peut naitre a la generation suivante
                    tab2[i][j] = 1;
                }
                if ((tab1[i][j] == 1) && (S[k] == 1) && (nb_voisins_M(tab1, i, j, n, m) == k)) {         // Si la celleule est vivanteet que les regles correspondent alors elle peut survivre a la generation suivante
                    tab2[i][j] = 1;
                }
            }
        }
    }
}
Ejemplo n.º 2
0
void generation_suivante_M_V2(int** tab1,int** tab2,int n, int m, int B[9],int S[9])
{
    int i=0,j=0,nbVoisins=0;
    const int vivant=1,mort=0,fantome=2;

    //On regarde en premier lieu si les cellules survives ou meurs
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            //si elle est vivante, alors on regard le nombre de voisin.
            if(tab1[i][j]==vivant)
            {
                nbVoisins=nb_voisins_M(tab1,i,j,n,m);

                //si le nombre de voisin ne permet pas a la cellule de vivre, elle devient morte a la prochaine génération
                if(S[nbVoisins]==mort)
                {
                    tab2[i][j]=fantome;
                }
            }
            else if(tab1[i][j]==fantome)
            {
                tab2[i][j]=mort;
            }
            else
            {

                nbVoisins=nb_voisins_M(tab1,i,j,n,m);

                //Si le nombre de voisin lui permet de vivre, alors elle sera vivante a la prochaine génération
                if(B[nbVoisins]==vivant)
                {
                    tab2[i][j]=vivant;
                }
            }
        }
    }

}
Ejemplo n.º 3
0
// Moore
double tests_nb_voisins_M(void)
{
	double results = 0;
	
	int i, j;
	int nbVoisins = 0;
	int **colonie = colonie_creer(N, M);
	
	for (i = 0; i < N; i++)
		for (j = 0; j < M; j++)
			colonie[i][j] = CELLULE_VIVANTE;
	
	
	nbVoisins = nb_voisins_M(colonie, 0, 0, N, M);
	results += (nbVoisins == 3);
	
	nbVoisins = nb_voisins_M(colonie, 0, 1, N, M);
	results += (nbVoisins == 5);
	
	nbVoisins = nb_voisins_M(colonie, 0, 2, N, M);
	results += (nbVoisins == 3);
	
	nbVoisins = nb_voisins_M(colonie, 1, 0, N, M);
	results += (nbVoisins == 5);
	
	nbVoisins = nb_voisins_M(colonie, 1, 1, N, M);
	results += (nbVoisins == 8);
	
	nbVoisins = nb_voisins_M(colonie, 1, 2, N, M);
	results += (nbVoisins == 5);
	
	nbVoisins = nb_voisins_M(colonie, 2, 0, N, M);
	results += (nbVoisins == 3);
	
	nbVoisins = nb_voisins_M(colonie, 2, 1, N, M);
	results += (nbVoisins == 5);
	
	nbVoisins = nb_voisins_M(colonie, 2, 2, N, M);
	results += (nbVoisins == 3);
	
	colonie_detruire(colonie, N, M);
	
	return results / 9;
}