我正在尝试编写代码以使用一维数组来显示规则 110,对于 30 个整数的数组,对于 20 行。
#include <stdio.h>
void rule(int t[]);
int main(void)
{
int count = 0;
int i;
int t[] = {0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0};
while (count++ < 20)
{
for (i = 0; i < 30; i++)
{
rule(t);
printf("%d", *t);
}
printf("\n");
}
return 0;
}
void rule(int t[])
{
int t1[30];
int ix;
int i;
for (ix=0; ix < 30; ix++)
{
if ((t[ix-1] == 0) && (t[ix] == 0) && (t[ix+1] == 0))
{
t1[ix] = 0;
}
else if ((t[ix-1] == 0) && (t[ix] == 0) && (t[ix+1] == 1))
{
t1[ix] = 1;
}
else if ((t[ix-1] == 0) && (t[ix] == 1) && (t[ix+1] == 0))
{
t1[ix] = 1;
}
else if ((t[ix-1] == 0) && (t[ix] == 1) && (t[ix+1] == 1))
{
t1[ix] = 1;
}
else if ((t[ix-1] == 1) && (t[ix] == 0) && (t[ix+1] == 0))
{
t1[ix] = 0;
}
else if ((t[ix-1] == 1) && (t[ix] == 0) && (t[ix+1] == 1))
{
t1[ix] = 1;
}
else if ((t[ix-1] == 1) && (t[ix] == 1) && (t[ix+1] == 0))
{
t1[ix] = 1;
}
else if ((t[ix-1] == 1) && (t[ix] == 1) && (t[ix+1] == 1))
{
t1[ix] = 0;
}
}
for (i = 0; i < 30; i++)
{
t[ix] = t1[ix];
}
}
它创建一个大小为 30 的数组,其中大部分填充 0 和几个 1,然后在规则函数中创建一个新数组并根据前一个数组包含的内容填充它,然后将其复制到初始数组中,然后将其传递回主要的。但是我的似乎只打印了很多 0。
其中0为空白,1为填充。