00001 00010 #include <stdio.h> 00011 #include <stdlib.h> 00012 #include <string.h> 00013 #include <sys/stat.h> 00014 #include <sys/types.h> 00015 #include <unistd.h> 00016 #include <math.h> 00017 00018 00023 typedef struct{ 00025 int size; 00027 int*** grid; 00028 } CA; 00029 00030 00037 int majority( CA* ca ); 00038 00039 00055 CA* randomizeToPercentage( CA* ca , int percent , int size ); 00056 00057 00066 void cpCA( CA* dest , CA* src ); 00067 00068 00075 int aggregate( CA* ca ); 00076 00077 00085 CA** randomCAs( int nCAs , int size ); 00086 00087 00097 CA* randomCA( int size ); 00098 00099 00108 int* getRule( char* file ); 00109 00110 00121 CA* getInitCA( char* file , int size ); 00122 00123 00131 CA* createCA( int size ); 00132 00133 00140 void printInternalCA( CA* ca ); 00141 00142 00149 void printCA( CA* ca ); 00150 00151 00164 void step( CA* curr , CA* next , int* rules ); 00165 00166 00176 int finished( CA* ca ); 00177 00178 00185 void freeCA( CA* ca ); 00186 00187 00202 double stepWithCount( CA* curr , CA* next , int* rules );