\d .s A:(_ci 97+!26;_ci 48+!10) set:{:[eq1[x;y;z," "];def[x;y;1_ z];_n~r:. z;0;r]} eq1:{.[x;`W;:;:[r:"="=*z;();y]];r} def:{:[""~z;clr[x;y;x .`Z,y];prs[x;y;z]];.[x;`V;,;,y];0} clr:{(`X`Y`Z,\:y).[x;;:;]'(;;());{.[x;`ZZ,z;_dv;y]}[;y]/[x;z]} prs:{(`X`Y,\:y).[x;;:;]'(z;,/spl[x;y]'(&1>':z _lin"._`\"",*A)_ z)} spl:{:[~(*z)_in*A;z;,/@[(0,(z _lin,/A)?0)_ z;0;nam[x;y]]]} nam:{:[""~*|r:(0,(z _lin*|A)?1)_ z;vec[x;y;*r];sca[x;y;r]]} sca:{".s.get[_d;",(5:dep[x;y;z]),"]"} vec:{"(.s.get[_d]'",(5:dep[x;y]'(z{(x;y)}/:$!x`N)_dv$y),")"} dep:{cyc[x;y;r:(`;0)$z];.[x;`Z,y;,;,r];.[x;`ZZ,r;,;,y];r} cyc:{if[y _in(,z),don[x;x .`Z,z];'"cycle!"]} don:{:[()~y;y;y,,/x _f/:x{x .`Z,y}/:y]} act:{inv[x;y]'x .`ZZ,y;x get/:x`V} inv:{if[~z _in y,x`V;.[x;`V;,;,z];_f[x;y,,z]'x .`ZZ,z]} get:{:[~y _in _dv/x`V`W;x .`T,y;dat[x;y]]} dat:{r::[@x .`X,y;x .`T,y;. x .`Y,y];.[x;`T,y;:;r];.[x;`V;_dv;y];r} fd0:{,(`N_;!x;.+(`e`f`l;(0;-8$;"")))} fds:{(y;x#0;.+(`f`g`fg`bg;`.s.f`.s.g`.s.fg`.s.bg))} f:{:[x~0;8#" ";$x]} g:{set[dr _d;cl[_v;_i];x]} fg:{:[@(d:dr _d).`X,i:cl[_v;_i];0;i~d`W;990000;99]} bg:{:[-3=4:x;808080]} cl:{(`$1_*|(&"."=v)_ v:$x;*y)} dr:{`$(- 1+(|v)?".")_ v:$x} \d .S C:`$/:*.s.A N:100 T..d:"..s.fd0[N],N .s.fds/:C" T..t:".s.act[_d;_i];" X..d:Y..d:".+(C;(#C)#,N#_n)" Z..d:ZZ..d:".+(C;(#C)#,N#,())" V..d:W..d:"C;N;()" \d ~ c:`form a:`T x:95 y:30