/ requires patterns/xyz.lif pad:{1!(2#,&2+*|^x),0,'x,'0} next:{[u;v;s]a:index[u]. s;w:(?,/a)_dvl u;b:index[w]. s;v:@[v;u;:;1];(u@&(2=k)|3=k:+/v a),w@&3=+/v b} index:{(x-1;x+1;x-z-1;x-z;x-z+1;x+z-1;x+z;x+z+1)!y*z} vbox:{(,/(7#,,:'&2){x,,y}/:(0 0 1 1 0;0 1 1 0 0)+/:+y _vs x),,,:'y} auto:{if[Auto;U::next[U;V;S];G+:1]} load:{d:(&"#P"~/:2#'t)_ t:0:"patterns/",x;anno t;c:run[x;+ins/[1 1#0;+norm .|+(. 2_*:)'d;(max"*"=1_)'d]]} anno:{A::2_'x@&(2#'x)_lin("#D";"#N")} max:{x,'&:'(|/c)-c:#:'x} ins:{k:0|(y+^z)-^x;x:x,'((#x),k 1)#0;x:x,(k[0],*|^x)#0;.[x;y+!:'^z;:;z]} norm:{(x-&/x;y-&/y)} run:{Rows::#y;Cols::(^y)1;U::&,/Pad pad/|E::y;.k.D..l::x} .t..t:".k.auto[]" U..d:"&,/Pad pad/|E" S..d:"(2*Pad)+^E" V..d:"&*/S" E..d:"(Rows,Cols)#0" E..k:".[`E;_i;~:];" E..f:_ci[32 215]@ E..e:0 E..bg:999999 E..l:`Edit E..x:85 E..y:38 Rows:Cols:30 Pad:100 By:10 G..d:"E;0" Next:"do[By;U:next[U;V;S]];G+:By" Next..c:`button Auto:0 Auto..c:`check F:!"patterns" F..k:"load _v ._i" F..e:0 F..l:`Patterns F..x:20 A:() A..e:0 A..l:` A..y:10 D..d:"vbox[U;S]" D..c:`plot D..x:70 D..y:35 `show$`D; \d ~ c:`form a:,(`F;(`E;`Rows`Cols`Pad`By`Next`Auto;`A)) l..d:"$.k.G" y:50 \d ~ `show$`.k; \t .0001 load"max.lif"