function cellwolf(rule,init,mylen,width); %rule='3311100320'; init='23'; mylen=1100; %width=200; %cellwolf('0002213310','1',200,200); %cellwolf('0003211310','r',200,200); %cellwolf('0000131210','r',200,200); %cellwolf('0000004200410','r',200,200); %cellwolf('0000004200410','1',200,200); mymat=zeros(mylen,width); initrow=zeros(1,width); if init=='r' for i=1:width initrow(i)=floor(2*rand); end else l=length(init); pos=ceil(width/2-l/2); for i=1:l initrow(pos+i-1)=str2num(init(i)); end end mymat(1,:)=initrow; myl=length(rule); for i=2:mylen for j=1:width left=j-1; right=j+1; if j==1 left=width; end if j==width right=1; end mynum=mymat(i-1,left)+mymat(i-1,j)+mymat(i-1,right); mymat(i,j)=str2num(rule(myl-mynum)); end end myimat=zeros(mylen,width,3); for i=1:mylen for j=1:width m=mod(mymat(i,j),4); if m>0 myimat(i,j,m)=1; end if mymat(i,j)>3 myimat(i,j,:)=~myimat(i,j,:); end end end image(myimat); imwrite(myimat,'stalactite.jpg','jpg');