请写一个元胞自动机的代码
时间: 2023-03-30 07:03:02 浏览: 104
以下是一个简单的元胞自动机的代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define WIDTH 50
#define HEIGHT 20
int main()
{
int grid[HEIGHT][WIDTH];
int i, j, k;
srand(time(NULL));
// 初始化随机种子
for (i = ; i < HEIGHT; i++) {
for (j = ; j < WIDTH; j++) {
grid[i][j] = rand() % 2;
}
}
// 进行 100 次迭代
for (k = ; k < 100; k++) {
// 打印当前状态
for (i = ; i < HEIGHT; i++) {
for (j = ; j < WIDTH; j++) {
printf("%c", grid[i][j] ? '#' : ' ');
}
printf("\n");
}
printf("\n");
// 计算下一步状态
int next_grid[HEIGHT][WIDTH];
for (i = ; i < HEIGHT; i++) {
for (j = ; j < WIDTH; j++) {
int count = ;
int x, y;
for (x = i - 1; x <= i + 1; x++) {
for (y = j - 1; y <= j + 1; y++) {
if (x >= && x < HEIGHT && y >= && y < WIDTH && !(x == i && y == j)) {
count += grid[x][y];
}
}
}
if (grid[i][j]) {
if (count == 2 || count == 3) {
next_grid[i][j] = 1;
} else {
next_grid[i][j] = ;
}
} else {
if (count == 3) {
next_grid[i][j] = 1;
} else {
next_grid[i][j] = ;
}
}
}
}
// 更新状态
for (i = ; i < HEIGHT; i++) {
for (j = ; j < WIDTH; j++) {
grid[i][j] = next_grid[i][j];
}
}
}
return ;
}
阅读全文