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 );