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);