A player program for Pousse is a function of two arguments:

 * The first argument is a number for the board size.

 * The second argument is the history of moves as a list (with the
   first move of the game at the beginning of the list).  Each move is
   a list of two values: a symbol --- 't, 'l, 'b, or 'r --- and a
   number.

The result should be a move (a list containg a symbol and a number).

The player program is not given the current board state, but it can be
derived from the move history. (The history is more useful than the
board state because a move that repeats a board state is a losing
move.)

The following example player program always mimics the other player,
choosing T1 if it has to go first:

  (lambda (n moves)
    (if (null? moves)
	;; first move
	'(t 1)
	;; otherwise, mimic previous move
	(let loop ([moves moves])
	  (if (null? (cdr moves))
	      (car moves)
	      (loop (cdr moves))))))

A friendly robot should take 30 seconds or less to select a move.

A program player is loaded into the game via the "Setup..." dialog,
which has an "Add a Program Player..." button for selecting an
implementation file. Loading the selected file should produce a
function, as described above.
