% FOURMIS représente le comportement d'une fourmi placée au départ
% au centre de la grille. Elle part dans la direction de l'Est, puis
% en fonction de la couleur de la case d'arrivée, tourne de 90° et 
% change la couleur de la case. Que se passe-t-il à court, moyen et
% long terme ?
%
% Modifier la valeur de N ci-dessous. et NBMAX pour le nombre d'essais.
% Suggestions: introduire M couleurs, et d'autres règles initiales TYPE.

% jbr , 16-10-97

% Données
n=81;					% taille de la matrice
type='10';				% règle initiale
nbmax=11000;			% nombre d'essais

% Initialisation
nbc=length(type);		% Longueur de la règle initiale
F=zeros(n,n);			% Matrice des couleurs
if rem(n,2)				% position de la case centrale
	li=(n-1)/2;
	col=(n-1)/2;
else
	li=n/2;
	col=n/2;
end

tabDir=[1 0				% matrice des directions E, S, O, N
        0 -1 
		-1 0
		0 1];
i=1;					
dir=tabDir(i,:);		% Direction initiale: à l'Est
c=1;
k=1;					% numéro de la couleur initiale

% Image initiale		
colormap(hsv(nbc));
h=image(F);
axis off
axis equal

while c<nbmax			% Boucle pour détecter une "autoroute"
	li=li+dir(1);		% déplacement en ligne
	col=col+dir(2);		% déplacement en colonne
	if F(li,col)		% 90° à gauche
		i=i+1;
		if i==5, i=1; end
		dir=tabDir(i,:);
		F(li,col)=0;
	else				% 90° à droite
		i=i-1;
		if i==0, i=4; end
		dir=tabDir(i,:);
		F(li,col)=1;
	end
	c=c+1;	
	% set(h,'cdata',F+1);	% pour un affichage de chaque étape
	% drawnow				% ôtez les commentaires
end	

% Affichage du résultat
image(rot90(fliplr(F))+1)
axis equal
axis off
