4.3BSD/usr/contrib/apl/lib/aw

n*.KB	Hdef def ;b9;e9;alph9;x9;y9
x9 { y9 { ,L'
}(~':'Ex9)/t9
b9{BJ(^/1 0='AW'Ex9)/'x9[(x9=''A'')/IRx9]{''W'''
}((V/^/' '=x9)V~V/ 2 4 E1YRx9{':' mat9 ' ',b9{,x9)/m9
alph9{'abcdefghijklmnopqrstuvwxyzaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzF0123456789'
e9{'z9{',(('A'Eb9)/' x9 '),x9[1;],('W'Eb9)/' y9  '
e9{e9,,(V/((0 ,0#1URb9) Ub9)#,' ')/-b9{(0 0 R' ') specify9O|b9
}(2=1YRx9)/l9
e9 {e9 rjn9 'z9{',x9[4;]
e9{e9 rjn9 '}(',x9[3;],')/0'
l9: e9{e9 rjn9 'z9{',x9[2;]
Lfx  ':' mat9 replace9 `1U,e9,':'
fns { ((~fns find9 x9[1;])/[1] fns) rjn9 y9
}0
t9: }(~V/y9{ fns find9 x9)/m9
L{ y9/[1] fns
}0
m9: 'not done'

mat9z{a mat9 b;c;d;e
e{Rd{`1U(c,0)-0,c{(+/~c)UH|c{(~#\''''=b)^a=b{,b,a
z{(+/^\' '=z)O|z{ 0 `1 U(e,c)R(,O|dJ.&Ic{S/d)\b

rjn9r {a rjn9 b;x
x{(`1YRa{(`2Y 1 1 ,Ra)R(,a),' ')S`1YRb{(`2Y 1 1 ,Rb)R(,b),' '
r{(((1YRa),x)Ya,((Ra)+0,x)R' '),[1]((1YRb),x)Yb,((Rb)+0,x)R' '

	specify9z{a specify9 b;c;d;e
z{ 0 0 R' '
}(0=Rb{((bI'{')DRb)Ub)/0
c { ';',O|(`1+cI' ')Yc{(+/^\' '=c)Uc{(+/^\bEalph9)Yb
z {(~V/a find9 c) /-(1,Rc)Rc
nxt: z { z rjn9(a rjn9 c) specify9 b
		replace9z{replace9 x;a;b;c;d
}(~V/'AW'Ex)/nil
z{' ',O\' ',[1]((1,Rx)Rx),[1]' '
z[b{(c^xEd)/IRx;]{(2 4 R' y9  x9 ')[(c{(~#\''''=x)^a$Rd)/a{(d{'WA')Ix;]
c{(Rz)R 0 0 1 0
c[b; 1 2 4]{1
z{(,c)/,z
}0
nil:z { ,x
fnfac(fac:WXfac W-1 :W=0:1fnb+b:(z,0)+0,z{b W-1:W=0:1fnplusplus:A+W
find9r { l find9 n
n{(n#' ')/n
r {(1URl)R0
}((Rn)>1URl)/0
l { ((1YRl),Rn)Yl
r {^/l=(Rl)Rn
fns ttimettime
L { 'total time is',(,B (.01XS(BN21)%.6)), ' secs.'