G'MIC exercises

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