J'essaye d'écrire du code pour utiliser des tableaux 1D pour montrer la règle 110, pour un tableau de 30 entiers, pour 20 lignes.Implémentation d'une règle 110 automates cellulaires utilisant des tableaux 1D
#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];
}
}
Il crée une taille de tableau 30 rempli de la plupart 0 et deux de 1, puis dans la fonction de la règle, il crée une nouvelle et remplit en fonction de ce que le tableau précédent contient, puis copie ce dans la première array et ceci est passé à main. Cependant le mien semble seulement imprimer beaucoup de 0.
Où 0 est vide, et 1 est rempli.
Si pas 'printf ("% d", * t)' 'être printf ("% d", * (t + i));' – ameyCU
@ameyCU qui changent l'original imprime juste tableau: beaucoup de fois –
A part: vous devez gérer les conditions de bord, 't [ix-1]' est ** comportement non défini ** quand 'ix == 0'. –