Code covered by the BSD License  

Highlights from
Elementary 1-D Cellular automata by 2 neigbors (r=2).

image thumbnail
from Elementary 1-D Cellular automata by 2 neigbors (r=2). by ehsan tahami
CA2 Displays evolution of a famous 1-D Cellular Automata by 2 neigbors (r=2).

pattern_highrule=CA2(wolfrule, initialstate, nrows)


function pattern_highrule=CA2(wolfrule, initialstate, nrows)
% CA2 Displays evolution of a famous 1-D Cellular Automata by 2 neigbors (r=2).
%    Pick a rule from 1-4.2950e+009  ( 2^ 32). 
%    wolfrule is the rule number ( a number between 1-4.2950e+009)
%    initialstate is an arbitrary one-dimensional binary matrix.
%    nrows is a number of CA's rows ( number of binary strims CA must produces)
%    % For example: CA2(1253, [1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0], 100);

    [unused, ncols]=size(initialstate);
    A=zeros(nrows, ncols); A(1,:)=initialstate;

% end
rule=dec2bin(wolfrule,32);
for i=1:32
    ru(i)=str2num(rule(i)); % Baraie joda kardan argham dodoE az ham
end
for i=2:nrows
    for j=3:ncols-2
        l=A(i-1,j-2); m=A(i-1,j-1); r=A(i-1,j);p=A(i-1,j+1);q=A(i-1,j+2);
            if(l==0 & m==0 & r==0 & p==0 & q==0)
            A(i,j)=ru(32);
        elseif  (l==0 & m==0 & r==0 & p==0 & q==1)
                A(i,j)=ru(31);
        elseif(l==0 & m==0 & r==0 & p==1 & q==0)
                A(i,j)=ru(30);
        elseif(l==0 & m==0 & r==0 & p==1 & q==1)
                A(i,j)=ru(29);
        elseif(l==0 & m==0 & r==1 & p==0 & q==0)
                A(i,j)=ru(28);
        elseif(l==0 & m==0 & r==1 & p==0 & q==1)
                A(i,j)=ru(27);
       elseif (l==0 & m==0 & r==1 & p==1 & q==0)
                A(i,j)=ru(26);
        elseif  (l==0 & m==0 & r==1 & p==1 & q==1)
                A(i,j)=ru(25);
        elseif   (l==0 & m==1 & r==0 & p==0 & q==0)
                A(i,j)=ru(24);
        elseif   (l==0 & m==1 & r==0 & p==0 & q==1)
                A(i,j)=ru(23);
        elseif   (l==0 & m==1 & r==0 & p==1 & q==0)
                A(i,j)=ru(22);
        elseif   (l==0 & m==1 & r==0 & p==1 & q==1)
                A(i,j)=ru(21);
        elseif   (l==0 & m==1 & r==1 & p==0 & q==0)
                A(i,j)=ru(20);
        elseif   (l==0 & m==1 & r==1 & p==0 & q==1)
                A(i,j)=ru(19);
        elseif   (l==0 & m==1 & r==1 & p==1 & q==0)
                A(i,j)=ru(18);
        elseif   (l==0 & m==1 & r==1 & p==1 & q==1)
                A(i,j)=ru(17);
        elseif  (l==1 & m==0 & r==0 & p==0 & q==0)
                A(i,j)=ru(16);
        elseif   (l==1 & m==0 & r==0 & p==0 & q==1)
                A(i,j)=ru(15);
        elseif   (l==1 & m==0 & r==0 & p==1 & q==0)
                A(i,j)=ru(14);
        elseif   (l==1 & m==0 & r==0 & p==1 & q==1)
                A(i,j)=ru(13);
        elseif   (l==1 & m==0 & r==1 & p==0 & q==0)
                A(i,j)=ru(12);
        elseif   (l==1 & m==0 & r==1 & p==0 & q==1)
                A(i,j)=ru(11);
        elseif   (l==1 & m==0 & r==1 & p==1 & q==0)
                A(i,j)=ru(10);
        elseif   (l==1 & m==0 & r==1 & p==1 & q==1)
                A(i,j)=ru(9);
        elseif   (l==1 & m==1 & r==0 & p==0 & q==0)
                A(i,j)=ru(8);
        elseif   (l==1 & m==1 & r==0 & p==0 & q==1)
                A(i,j)=ru(7);
        elseif   (l==1 & m==1 & r==0 & p==1 & q==0)
                A(i,j)=ru(6);
        elseif   (l==1 & m==1 & r==0 & p==1 & q==1)
                A(i,j)=ru(5);
        elseif   (l==1 & m==1 & r==1 & p==0 & q==0)
                A(i,j)=ru(4);
        elseif   (l==1 & m==1 & r==1 & p==0 & q==1)
                A(i,j)=ru(3);
        elseif   (l==1 & m==1 & r==1 & p==1 & q==0)
                A(i,j)=ru(2);
        elseif   (l==1 & m==1 & r==1 & p==1 & q==1)
            A(i,j)=ru(1);
        end
    end
end

pattern_highrule =A;
colormap(gray(2)); image(2-A); axis image; title(wolfrule);

Contact us