EDIT: Solved it, but new problem. Random numbers, and the effect doesn’t show up.
f i0
repeat $! l[$>]
tcr=3
cmyk_mode=0
if $cmyk_mode tcr+=1 fi
if s==2||s>$tcr
ss={s-1}
{w},{h},1,1,i(#-1,x,y,z,$ss)?1
eval ${-math_lib}"
const ww=w#-1;
const hh=h#-1;
orientation=1;
direction=1;
continue=1;
if(orientation,
if(direction,
for(xx=0,xx<ww-1,xx++,
N=0;
v=0;
for(yy=hh-1,yy>-1,yy--,
if(yy==hh-1,
old_data=i(#-1,xx,yy);
for(tyy=hh-1,tyy>-1,tyy--,
N+=i(#-1,xx,tyy);
);
N/=hh;
if(N==1||N==0,break(););
if(!old_data,
nyy=yy;
do( v++;
nyy--;
,(!i(#-1,xx,nyy))&&nyy>-1
);
i(#-1,xx,yy)=v;
);
,
new_data=i(#-1,xx,yy);
if(new_data<old_data,
nyy=yy;
do( v++;
nyy--;
,(!i(#-1,xx,nyy))&&nyy>-1
);
i(#-1,xx,yy)=v;
);
i(#-1,xx,yy)=v;
old_data=new_data;
);
);
);
,
for(xx=0,xx<ww-1,xx++,
N=0;
v=0;
for(yy=0,yy<hh,yy++,
if(yy==0,
old_data=i(#-1,xx,yy);
for(tyy=0,tyy<hh,tyy++,
N+=i(#-1,xx,tyy);
);
N/=hh;
if(N==1||N==0,break(););
if(!old_data,
nyy=yy;
do( v++;
nyy--;
,(!i(#-1,xx,nyy))&&nyy>-1
);
i(#-1,xx,yy)=v;
);
,
new_data=i(#-1,xx,yy);
if(new_data<old_data,
nyy=0;
do( v++;
nyy++;
,(!i(#-1,xx,nyy))&&nyy<hh
);
);
i(#-1,xx,yy)=v;
old_data=new_data;
);
);
);
);
,
if(direction,
for(yy=0,yy<hh,yy++,
N=0;
v=0;
for(xx=ww-1,xx>-1,xx--,
if(xx==ww-1,
old_data=i(#-1,xx,yy);
for(txx=ww-1,txx>-1,txx--,
N+=i(#-1,txx,yy);
);
N/=ww;
if(N==1||N==0,break(););
if(!old_data,
nxx=xx;
do( v++;
nxx--;
,(!i(#-1,nxx,yy))&&nxx>-1
);
i(#-1,xx,yy)=v;
);
,
new_data=i(#-1,xx,yy);
if(new_data<old_data,
nxx=0;
do( v++;
nxx--;
,(!i(#-1,nxx,yy))&&nxx>-1
);
i(#-1,xx,yy)=v;
);
i(#-1,xx,yy)=v;
old_data=new_data;
);
);
);
,
for(yy=0,yy<hh,yy++,
N=0;
v=0;
for(xx=0,xx<ww,xx++,
if(xx==0,
old_data=i(#-1,xx,yy);
for(txx=0,txx<ww,txx++,
N+=i(#-1,txx,yy);
);
N/=ww;
if(N==1||N==0,break(););
if(!old_data,
nxx=xx;
do( v++;
nxx++;
,(!i(#-1,nxx,yy))&&nxx<ww
);
i(#-1,xx,yy)=v;
);
,
new_data=i(#-1,xx,yy);
if(new_data<old_data,
nxx=0;
do( v++;
nxx--;
,(!i(#-1,nxx,yy))&&nxx>-1
);
);
i(#-1,xx,yy)=v;
old_data=new_data;
);
);
);
);
);
"
fi
if $cmyk_mode tcr-=1 fi
endl done