写一个模拟动物演化的元胞自动机代码
时间: 2023-03-28 12:00:33 浏览: 53
好的,我可以回答这个问题。以下是一个简单的元胞自动机代码,用于模拟动物演化:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define WIDTH 50
#define HEIGHT 20
#define MAX_GENERATIONS 100
int world[HEIGHT][WIDTH];
void init_world() {
srand(time(NULL));
for (int i = ; i < HEIGHT; i++) {
for (int j = ; j < WIDTH; j++) {
world[i][j] = rand() % 2;
}
}
}
void print_world() {
for (int i = ; i < HEIGHT; i++) {
for (int j = ; j < WIDTH; j++) {
printf("%c", world[i][j] ? '*' : ' ');
}
printf("\n");
}
}
int count_neighbors(int row, int col) {
int count = ;
for (int i = row - 1; i <= row + 1; i++) {
for (int j = col - 1; j <= col + 1; j++) {
if (i >= && i < HEIGHT && j >= && j < WIDTH && !(i == row && j == col)) {
count += world[i][j];
}
}
}
return count;
}
void update_world() {
int new_world[HEIGHT][WIDTH];
for (int i = ; i < HEIGHT; i++) {
for (int j = ; j < WIDTH; j++) {
int neighbors = count_neighbors(i, j);
if (world[i][j]) {
if (neighbors < 2 || neighbors > 3) {
new_world[i][j] = ;
} else {
new_world[i][j] = 1;
}
} else {
if (neighbors == 3) {
new_world[i][j] = 1;
} else {
new_world[i][j] = ;
}
}
}
}
for (int i = ; i < HEIGHT; i++) {
for (int j = ; j < WIDTH; j++) {
world[i][j] = new_world[i][j];
}
}
}
int main() {
init_world();
for (int i = ; i < MAX_GENERATIONS; i++) {
printf("Generation %d:\n", i);
print_world();
update_world();
}
return ;
}