#include #include #include #include using namespace std; const int dimx = 101, dimy = 101, N = 100; const double seuil = 0.8; void initialisation(int** m) { int i, j; for (i = 0; i < dimy; i++) for (j = 0; j < dimx; j++) if (drand48() >= seuil) m[i][j] = 1; else m[i][j] = 0; } int nombre_voisins(int** m, int i0, int j0) { int i, j, s = 0; for (i = i0-1; i <= i0+1; i++) for (j = j0-1; j <= j0+1; j++) if (!(i == i0 && j == j0)) s += m[(i+dimy)%dimy][(j+dimx)%dimx]; return s; } void applique_regles(int** m, int** m1) { int i, j, s; for (i = 0; i < dimy; i++) for (j = 0; j < dimx; j++) { s = nombre_voisins(m,i,j); if (s == 3) m1[i][j] = 1; else if (s == 2) m1[i][j] = m[i][j]; else m1[i][j] = 0; } } int main() { int i, j, k; int** m, ** m1; fstream fich; srand48(time(NULL)); m = (int**)malloc(dimy * sizeof(int*)); for (i = 0; i < dimy; i++) m[i] = (int*)malloc(dimx * sizeof(int)); m1 = (int**)malloc(dimy * sizeof(int*)); for (i = 0; i < dimy; i++) m1[i] = (int*)malloc(dimx * sizeof(int)); Py_Initialize(); PyRun_SimpleString("from numpy import *"); PyRun_SimpleString("from matplotlib.pyplot import *"); PyRun_SimpleString("ion()"); PyRun_SimpleString("fig=figure()"); for (k = 0; k < N; k++) { if (k == 0) initialisation(m); else { applique_regles(m, m1); for (i = 0; i < dimy; i++) for (j = 0; j < dimx; j++) m[i][j] = m1[i][j]; } fich.open("jeu.dat", ios::out); for (i = 0; i < dimy; i++) { for (j = 0; j < dimx; j++) fich << m[i][j] << " "; fich << endl; } fich.close(); PyRun_SimpleString("A=loadtxt('jeu.dat')"); PyRun_SimpleString("clf()"); PyRun_SimpleString("imshow(A,cmap=cm.Purples)"); PyRun_SimpleString("fig.canvas.draw()"); PyRun_SimpleString("pause(0.3)"); } Py_Finalize(); for (i = 0; i < dimy; i++) { free(m[i]); free(m1[i]); } free(m); free(m1); return 0; }