Make it executable in a more natural way.

(Either by calling Racket on the file, or running it directly.)
Fix two obvious bugs.

`=' can't work on pairs; proper range testing.  This makes it actually
playable...
Use internal definitions instead of `let's where applicable.

Since this is the preferred style in Racket code.
Simplify `play'.

There's no point in sending it the input and calling it after showing
the board -- much simpler to do it all in it.
Improve `make-board'.

Use `rand-pos' to abstract over postion making, and use a loop instead
of folding over an ignored list.
Add some command-line flags to customize the game.
Switch from a hash to a struct for board representation.

In general, we try to avoid generic values like lists (as used in
Scheme/Lisp) and hashes (as used in JS/Ruby/etc) when we have a specific
type.