Mark will match all hw3 competition version submissions against one another to determine the best four. The matches will be timed using the code provided below.
An optional human tournament will be held in LH406 at 7pm on Monday Oct 20, to determine the best Othello player in the class.
On class in Tuesday Oct 21, we will hold a live tournament between the four best programs to determine a champion, and then have a match between the best student player and the best program. Before the matches, we will invite the authors of the four top-rated programs to say a few words about the secrets of their programs (e.g., their evaluation functions or methods to increase efficiency), and then watch as their systems confront each other for the machine championship!
The name of the procedure must correspond to your IU username. For example, if your username is mw54, your procedure should be called mw54 as well. To define additional procedures that will be visible to your main procedure and to each other, but not externally, you can place your additional procedures inside a let expression, with the lambda expression for your main procedure as the body of the let additional procedures. For example,
(define mw54
(let ()
(define proc-1 (lambda (arg1 arg2 ...) body-1))
(define proc-2 (lambda (arg1 arg2 ...) body-2))
...
(define proc-n (lambda (arg1 arg2 ...) body-n))
(lambda (initializing? board-state current-player remaining-time opponent-remaining-time)
your main code here, calling the helper procedures as appropriate)))
Or, you can use defines inside your lambda expression:
(define mw54
(lambda (initializing? board-state current-player remaining-time opponent-remaining-time)
(define proc-1 (lambda (arg1 arg2 ...) body1))
(define proc-2 (lambda (arg1 arg2 ...) body2))
...
your main code here, calling the helper procedures as appropriate))
timing.ss is a wrapper for othello.ss which allows for games with a time limit. Times are in milliseconds. To see a program called mw54 play against itself: