Code:
int seed;
int intrnd () /* 1<=seed<=m */
{
double const a = 16807;
double const m = 2147483647;
double temp = seed * a;
seed = (int) (temp - m * floor ( temp / m ));
return seed;
}
double rand_0to1()
{ return ( intrnd() / 2147483647.0 ); }
double random_number()
{
double r;
while ((r = rand_0to1() ) >= 1.0 ) ;
return ( r );
} /* end random_number()*/
#define Randint(UPPER) ((int)(random_number()*(UPPER)))
enum tokens {DUMMY, LEFT, RIGHT, MOVE, IF_FOOD_AHEAD, PROGN2, PROGN3};
struct token_entry
{
char *name;
int arity_sub1;
// function
};
struct token_entry token_table [] =
{ {"# ", -1}, // String end. Arity must be -1 for sub-string search
{"LEFT ", -1},
{"RIGHT ", -1},
{"MOVE ", -1},
{"IF_FOOD_AHEAD ", 1},
{"PROGN2 ", 1},
{"PROGN3 ", 2}
};
struct prog
{
char code[MAX_PROG_SIZE+1]; // allow for string terminator
int proglen;
int fitness;
};
struct prog population [POPULATION_SIZE];
int best_prog;
int smallest_proglen;
int best_fitness;
int correct; int trace=FALSE;
//(AG) File globals (run used in filename)
int run;
char filename[16];
FILE *filep;
char *nodep;
int row, col, next_row, next_col, heading, steps, pellets;
enum {NORTH, EAST, SOUTH, WEST};
char matrix[MATRIX_SIZE][MATRIX_SIZE];
char matrix_data[MATRIX_SIZE][MATRIX_SIZE];
void randomfood (void)
{
int cfood, nofood;
for (nofood = 0; nofood < 924; nofood++) matrix_data[rand()%MATRIX_SIZE][RAND()%MATRIX_SIZE] = 0;
for (cfood = 0; cfood < 100; cfood++) matrix_data[rand()%MATRIX_SIZE][rand()%MATRIX_SIZE] = 1;
}
char trace_matrix[MATRIX_SIZE][MATRIX_SIZE];
/////////////////Test////////////////////////////
void intimatrinx( char matrix_data[MATRIX_SIZE][MATRIX_SIZE])
{
int i, j;
srand((unsigned int)time(NULL));
for(j=0;j<MATRIX_SIZE;j++
for(i=o;i<MATRIX_SIZE;i++)
{
int res = rand()%5;
matrix_data[i][j] = (res ==0);
}
}
//char trace_matrix[MATRIX_SIZE][MATRIX_SIZE];
void output_program(struct prog *progp)
{
char *codep = progp->code;
char token;
while (token = *codep++)
fputs(token_table[token].name, stdout);
putchar('\n');
}
void print_matrix(void)
{ int i, j, matrix_data ; char symbs[] = " OX";
for (i=0; i < MATRIX_SIZE; i++)
{ for (j=0; j < MATRIX_SIZE; j++)
for (matrix_data=0; matrix_data < 500; matrix_data++)
putchar(symbs[trace_matrix[i][j]]);
putchar('\n');
}
}
I have modify the code, but it is........
"::><::"