Creating an Othello competitor

Let's say, you're creating the competitor: fred.py.
The GameDriver.py program will launch your program with (at least) the following command-line arguments:

fred.py action=?? outputfile=?? result_prefix=?? ply=?? play=?? board=?? cputime=??  (and any additional debugging arguments given on the UI)

Argument Value
action "id" means return  the author and title
"move" means return the best move and the maximum ply that actually computed it
outputfile Write the result of the action (move, or title and author) into this file
result_prefix Write this string into the outputfile before writing the result(s) above
ply Limit the depth of the search to this maximu ply
play the player is now either "x" or "o" -- "x" means black, and "o" means white
board the string encoding the current state of the board (see below for the board layout)
cputime maximum number of seconds of cputime

Typical call:

fred.py  action=move  outputfile=out-11568.txt  result_prefix=ANSWER:  ply=4  play=x  cputime=1.5  board=---------------------------xo------ox---------------------------

Board encoding:

The current state of othello board is encoded as a 64-character string consisting of the letters "x", "o" and "-".  For instance, in the board string above, position 0 contains "x", position 2 contains "o", position 5 contains "o" and position 7 contains "x".  These are the positions that the two players "x" and "o" have played so far.  All 38 other positions are not yet played.

The mapping between string positions (from 0 to 63) and the 2-D visual representation of the board is:

56 57 58 59 60 61 62 63
48 49 50 51 52 53 54 55
40 41 42 43 44 45 46 47
32 33 34 35 36 37 38 39
24 25 26 27 28 29 30 31
16 17 18 19 20  21 22 23
8 9 10 11 12 13 14 15
0 1 2 3 4 5 6 7

So the board-string:   board=---------------------------xo------ox---------------------------   is equivalent to the layout below (remember: x=black, o=white), which is the starting position for all games.  The first "x" is in position 27 in the string, and the other "x" is in position 36.

               
               
               
      o x      
      x o