/ requires gbox.k and patterns/xyz.lif pad:{1!(2#,&2+*|^x),0,'x,'0} next:{(x&2=k)|3=k:+/adj x} adj:{t:(l';r';r:-1!;l:1!)@\:x;t,,/(r';l')@/:\:t 2 3} next:{s#(v&2=k)|3=k:+/adj[v:,/x]. s:^x} adj:{x index[!#x;y;z]} index:{(x-1;x+1;x-z-1;x-z;x-z+1;x+z-1;x+z;x+z+1)!y*z} auto:{if[Auto;U::next U;G+:1]} load:{d:(&"#P"~/:2#'d)_ d:0:"patterns/",x;c:run[x;+ins/[1 1#0;+norm .|+(. 2_*:)'d;(max"*"=1_)'d]]} 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" 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];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 \l gbox D..d:"gbox U" D..c:`plot D..x:70 D..y:35 `show$`D; \d ~ c:`form a:,(`F;(`E;`Rows`Cols`Pad`By`Next`Auto)) l..d:"$.k.G" y:40 \d ~ `show$`.k; \t .0001 load"max.lif"