\ifx\>\:\documentclass{report}\fi \vsize5cm\hsize3cm\newlinechar`*\def~#1{\catcode`#113~} ~IJKLMNOPQRSTUVWXYZjqz@.[|](/+^'";:?,_)!*{ 13\def~#1#2{\let#1#2~} \def+{\count\ifx\>\:1\fi1}+1=2}*\cr[\ifnum(\ifcase|\or/\else]\fiN\number @\advanceX\expandafter!\global?\message~\def.#1{@+1 1\countdef#1+1.} .IJKLPQRSTUVWYZ.-1P1T2+44P+55P+45T+54T ~j{[0Q[0J^/.]/.]/.]/.]} ~^{+NQNJ}~:#1{#11#12#13#14#15#16#17#18}~M#1{?{#1}#1} ~_#1#2{M#2:{\B#1}&M#2&M{*}}~\B#1#2{&M{(+#1#2 |-|0]}} ~q{?{Row and column? e.g. E6*}\read.to\EX\D\meaning\E ;} ~\D#1->#2#3#4;{Q`#2@Q-`@J`#3@J-`0)(V?{Invalid move #2#3.}q]} ~){V0 (jS1z1z0z.S0z1z.S.z1z0z.]}~;{@R(P|-]}~z#1{{K#1Z1{Y1,}(Z,]}} ~,{@QS@JK[j=T(Y!^P!;2]O,/[j=P!VV(I(Y/!Z0]]]]}~\A#1{Q#1:\C} ~\C#1{J#1)[0WWVUQLJ]]}~"#1{(#1|0|1|2|2|2|2|1|0]} ~O{Z"Q\multiplyZ3@Z"J@V(Z9|1|6|1|1|2|6|2|4] }~'{M :{&M}&M{*}} ~~{PXTXTNP\halign{&## *M{*}'_1A_2B_3C_4D_5E_6F_7G_8H'}\vfil\break I1W(W./0] :\AI0 [0R-/0] wins by N[0>R-]R].}X\dump]~}~