#!/usr/local/bin/apl -s -- ∇r←b FlipRow ix ⍝ Flip a row r←b r[ix;]←~r[ix;] ∇ ∇r←b FlipCol ix ⍝ Flip a column r←b r[;ix]←~r[;ix] ∇ ∇r←RandFlip b;ix ⍝ Flip a random row or column ix←?↑⍴b →(2|?2)/col r←b FlipRow ix ⋄ →0 col: r←b FlipCol ix ∇ ∇s←ttl ShowBoard b;d ⍝ Add row, column indices and title to board s←'-'⍪⍕(' ',⎕UCS 48+d),(⎕UCS 64+d←⍳↑⍴b)⍪b s←((2⊃⍴s)↑ttl)⍪s ∇ ∇b←MkBoard n ⍝ Generate random board b←(?(n,n)⍴2)-1 ∇ ∇Game;n;board;goal;moves;swaps;in;tgt ⍝⍝ Initialize ⎕RL←(2*32)|×/⎕TS ⍝ random seed from time →(5≠⍴⎕ARG)/usage ⍝ check argument →(~'0123456789'∧.∊⍨n←5⊃⎕ARG)/usage →((3>n)∨8