8
votes

Quel est l'automate cellulaire montré comme écran de chargement sur Wolfram Alpha?

En entrant dans une requête à Wolfram Alpha, vous voyez généralement une animation indiquée pendant quelques secondes avant que le résultat ne soit affiché. Il semble être un automate cellulaire avec 3 états distinctifs.

J'aimerais savoir ce qu'on appelle cet automate particulier et où je peux trouver des informations à ce sujet. Merci!


0 commentaires

3 Réponses :


-2
votes

C'est Game de la vie de Conway . Il y a un très bon article Wikipedia sur celui-ci, je vous suggère d'aller jeter un coup d'oeil là-bas.


1 commentaires

Cela ne peut pas être vrai, car le jeu de la vie de convoite n'a que 2 états possibles: morts et vivants. L'automate montré sur la page de chargement de WA a cependant 3 états: vide, petit cercle et grand cercle. Peut-être que c'est une variation du jeu de la vie? Si oui, pouvez-vous me signaler une description / une implémentation particulière?



14
votes

C'est un automate cellulaire avec 5 états. La règle est 3457/357/5 à l'aide de Notation de Golly's .

Il possède 5 états: 0 , 1 , 2 , 3 , 4 . À chaque étape, les cellules se comportent comme suit:

  • 0 -> 1 Si 3, 5 ou 7 de ses huit voisins sont 1 ou 0 sinon
  • 1 -> 1 si 3, 4, 5 ou 7 de ses huit voisins sont 1 ou 2 sinon
  • 2 -> 3
  • 3 -> 4
  • 4 -> 0

    Voici un oscillateur avec la période 15:

    Entrez la description de l'image ici

    Voici une bouffante avec la période 24:

    Entrez la description de l'image ici


2 commentaires

C'est ça! Le lien vers Golly est extrêmement utile. Jamais entendu parler de ça avant!


Voici un jsfiddle de ma mise en œuvre JavaScript de l'animation spécifique de Wolfram. Dû attraper une capture d'écran de l'un des cadres pour l'initialiser lol. Celui que j'ai attrapé était assez simple, mais j'aimerais connaître le point de départ absolu qu'ils utilisent. jsfiddle.net/iammortos/espncctd



1
votes

Voici une implémentation de matlab très rapide de l'automatisation cellulaire de Wolfram Alpha:

rng(38); % 31 lasts a while / 38 has two oscillators / 39 lasts longer /42 lasts muuuuch longer
X = randi([0 4],30,40);

[a,b] = size(X);

initialFig = figure('toolbar','none','menubar','none');
[x,y]      = meshgrid(1:b,1:a);
scathandle = scatter(x(:),y(:),20*X(:)+1,X(:)+1,'filled');
colormp    = linspace(1,0.4,5)'*[1 1 1]; colormap(colormp);
axis([0 b+1 0 a+1]); axis off; set(gca,'position',[0 0 1 1]); set(gcf,'toolbar','none','menubar','none','color','w','numbertitle','off','name',''); axis equal;

n = [a 1:a-1]; % The previous row
s = [2:a 1];   % The next row
e = [2:b 1];   % The next column
w = [b 1:b-1]; % The previous column

[A,B,C] = meshgrid(1:a,1:b,[0 1]);

Xnew = X;
while 1
    N = (X(n,:)==1) + (X(s,:)==1) + (X(:,e)==1) + (X(:,w)==1) + (X(n,e)==1) + (X(n,w)==1) + (X(s,e)==1) + (X(s,w)==1); % Look for the total number of nieghbours == 1

    Xnew(X>=2) = mod(X(X>=2)+1,5); % if state is greater or equal to 2, increment 1 modulo 5
    Xnew(X==0) = (N(X==0)==3 | N(X==0)==5 | N(X==0)==7); % if state is 0, turn to 1 when neighbours equal 3,5 or 7. Leave 0 otherwise.
    Xnew(X==1) = 2 - (N(X==1)==3 | N(X==1)==4 | N(X==1)==5 | N(X==1)==7); % if state is 1, turn to 2 unless neighbours equal 3, 4 or 5. In the latter case, leave 1.
    X = Xnew;
    set(scathandle,'cdata',X(:)+1,'sizedata',20*X(:)+1);
    drawnow;

    if ~ishandle(initialFig)
        return
    end
end


0 commentaires