Tournament results are in. Here's how we ran it:
Not surprisingly, any AI that didn't compile was not entered into the tournament.
For all pairs of AIs i and j, i played two games against j: once with i as the black player and once with i as the white player.
Any AI that threw an exception, had an infinite loop or infinite recursion, returned an invalid move, did not have a chooseMove( ) method with the proper signature, did not implement the OthelloAI interface, or took too long to make a move (5 CPU seconds) was disqualified as soon as the error was uncovered, and was not allowed to play any more games. (I should have also disqualified any AI that printed any output to System.out, but I opted to look past this problem. Still, the assignment makes clear that you should not turn in code that dumps output to the console--and as programmers, you should especially know that you do not send debug output to the console in the released (turned-in) version of code!
Any games played by a subsequently disqualified AI were thrown out. As a result, the number of games counted for each AI was the same. After all the games were played, the results of all games between pairs of AIs that were not disqualified were tabulated.
The order of finish in the tournament was determined by two factors:
The winning fraction, which was calculated using the formula: (wins + (ties / 2.0)) / games_played.
The total number of tiles earned in all games played, which was used as a tiebreaker if there was a tie on winning fraction.
Do remember that where you place in the tournament ranking, in and of itself, is not considered when grading your work.
The results
Player is the last four digits of your UCI ID# (or Access ID#). Total Record indicates your AI's total number of wins, losses and ties in games played. Win Frac is calculated as described above. Total Tiles is the total number of tiles your AI earned in all of the games it played. Record as Black and Record as White show the number of wins, losses and ties in games played as the black and white player, respectively. A java.lang.reflect.InvocationTargetException disqualification means that your program threw a fatal exception of some kind that triggered a secondary exception in the tournament program itself (one from which the tournament was able to recover).
[[Tournament Scores By Player]] Player Total Record Win Pct Total Tiles Record as Black Record as White --------------------------------------------------------------------------------------------------------- 1055 52-66- 2 0.442 3279 23-36- 1 29-30- 1 1095 4-116-0 0.033 1927 2-58- 0 2-58- 0 1172 DISQUALIFIED (took too long) 1231 DISQUALIFIED (took too long) 1286 DISQUALIFIED (illegal move) 1330 DISQUALIFIED (illegal move) 1678 71-48- 1 0.596 3791 36-23- 1 35-25- 0 1775 DISQUALIFIED (took too long) 1851 50-68- 2 0.425 3217 22-36- 2 28-32- 0 1859 DISQUALIFIED (took too long) 1930 24-92- 4 0.217 2848 23-36- 1 1-56- 3 2057 60-52- 8 0.533 3810 22-30- 8 38-22- 0 2125 DISQUALIFIED (illegal move) 2153 88-31- 1 0.738 4726 46-13- 1 42-18- 0 2196 DISQUALIFIED (illegal move) 2217 DISQUALIFIED (java.lang.NullPointerException) 2250 DISQUALIFIED (java.lang.NullPointerException) 2253 49-69- 2 0.417 3170 22-36- 2 27-33- 0 2303 64-53- 3 0.546 4184 36-21- 3 28-32- 0 2508 53-66- 1 0.446 3278 20-39- 1 33-27- 0 2622 13-105-2 0.117 2299 7-51- 2 6-54- 0 2654 55-56- 9 0.496 3653 34-18- 8 21-38- 1 2662 DISQUALIFIED (took too long) 2674 DISQUALIFIED (took too long) 2680 73-46- 1 0.613 3971 34-26- 0 39-20- 1 2730 DISQUALIFIED (java.lang.reflect.InvocationTargetException) 2782 26-94- 0 0.217 2468 17-43- 0 9-51- 0 2865 44-73- 3 0.379 3727 35-23- 2 9-50- 1 2920 DISQUALIFIED (took too long) 2921 DISQUALIFIED (took too long) 3037 55-61- 4 0.475 3408 32-27- 1 23-34- 3 3079 DISQUALIFIED (java.lang.reflect.InvocationTargetException) 3171 DISQUALIFIED (took too long) 3271 DISQUALIFIED (illegal move) 3278 49-68- 3 0.421 3531 27-32- 1 22-36- 2 3326 DISQUALIFIED (illegal move) 3390 23-97- 0 0.192 2393 12-48- 0 11-49- 0 3450 DISQUALIFIED (illegal move) 3660 DISQUALIFIED (java.lang.NullPointerException) 3693 115- 4- 1 0.963 6212 56- 4- 0 59- 0- 1 3718 DISQUALIFIED (illegal move) 3753 93-25- 2 0.783 4530 44-16- 0 49- 9- 2 4029 DISQUALIFIED (illegal move) 4060 34-84- 2 0.292 2906 22-37- 1 12-47- 1 4268 35-82- 3 0.304 2971 17-43- 0 18-39- 3 4315 38-82- 0 0.317 3282 13-47- 0 25-35- 0 4378 DISQUALIFIED (took too long) 4582 46-72- 2 0.392 3516 18-41- 1 28-31- 1 4601 77-40- 3 0.654 4557 19-38- 3 58- 2- 0 4704 DISQUALIFIED (took too long) 4734 55-62- 3 0.471 3354 32-27- 1 23-35- 2 5055 DISQUALIFIED (illegal move) 5147 111- 9- 0 0.925 5673 54- 6- 0 57- 3- 0 5243 114- 6- 0 0.950 5711 55- 5- 0 59- 1- 0 5585 103-16- 1 0.863 4935 53- 6- 1 50-10- 0 5708 53-65- 2 0.450 3327 31-27- 2 22-38- 0 5719 53-64- 3 0.454 3365 31-28- 1 22-36- 2 6149 91-29- 0 0.758 4458 49-11- 0 42-18- 0 6321 53-64- 3 0.454 3385 31-28- 1 22-36- 2 6599 DISQUALIFIED (took too long) 6619 50-68- 2 0.425 3246 22-36- 2 28-32- 0 6668 11-108-1 0.096 1920 7-53- 0 4-55- 1 6745 DISQUALIFIED (took too long) 6817 51-69- 0 0.425 3597 27-33- 0 24-36- 0 6826 DISQUALIFIED (illegal move) 6859 DISQUALIFIED (took too long) 6876 34-86- 0 0.283 2906 15-45- 0 19-41- 0 6910 55-62- 3 0.471 3363 31-28- 1 24-34- 2 6913 DISQUALIFIED (took too long) 7005 DISQUALIFIED (illegal move) 7023 DISQUALIFIED (illegal move) 7027 109-11- 0 0.908 5420 56- 4- 0 53- 7- 0 7052 79-39- 2 0.667 4019 37-22- 1 42-17- 1 7175 29-89- 2 0.250 2897 15-43- 2 14-46- 0 7291 DISQUALIFIED (took too long) 7350 DISQUALIFIED (took too long) 7362 35-83- 2 0.300 2923 16-44- 0 19-39- 2 7659 67-51- 2 0.567 3691 36-22- 2 31-29- 0 7708 57-63- 0 0.475 3490 26-34- 0 31-29- 0 7710 40-80- 0 0.333 3026 7-53- 0 33-27- 0 7761 DISQUALIFIED (java.lang.reflect.InvocationTargetException) 7784 81-34- 5 0.696 4817 47-13- 0 34-21- 5 7833 DISQUALIFIED (illegal move) 7854 96-23- 1 0.804 5130 51- 9- 0 45-14- 1 7874 55-62- 3 0.471 3359 31-28- 1 24-34- 2 7920 73-43- 4 0.625 4343 31-26- 3 42-17- 1 8047 DISQUALIFIED (illegal move) 8082 DISQUALIFIED (illegal move) 8251 57-60- 3 0.488 3614 26-33- 1 31-27- 2 8449 DISQUALIFIED (took too long) 8450 DISQUALIFIED (java.lang.reflect.InvocationTargetException) 8534 DISQUALIFIED (took too long) 8549 48-68- 4 0.417 3174 31-29- 0 17-39- 4 8772 DISQUALIFIED (took too long) 8801 66-52- 2 0.558 3786 32-27- 1 34-25- 1 8959 50-69- 1 0.421 3392 20-40- 0 30-29- 1 9020 49-61-10 0.450 3510 31-29- 0 18-32-10 9030 53-64- 3 0.454 3365 31-28- 1 22-36- 2 9269 DISQUALIFIED (illegal move) 9431 107-12- 1 0.896 5476 53- 6- 1 54- 6- 0 9442 54-64- 2 0.458 3378 21-38- 1 33-26- 1 9487 70-48- 2 0.592 4412 31-28- 1 39-20- 1 9629 87-32- 1 0.729 4608 42-17- 1 45-15- 0 9679 65-55- 0 0.542 3648 32-28- 0 33-27- 0 9772 DISQUALIFIED (took too long) 9830 DISQUALIFIED (illegal move) 9968 44-75- 1 0.371 3199 19-41- 0 25-34- 1 9976 DISQUALIFIED (took too long) [[Tournament Scores By Record]] Player Total Record Win Pct Total Tiles Record as Black Record as White --------------------------------------------------------------------------------------------------------- 3693 115- 4- 1 0.963 6212 56- 4- 0 59- 0- 1 5243 114- 6- 0 0.950 5711 55- 5- 0 59- 1- 0 5147 111- 9- 0 0.925 5673 54- 6- 0 57- 3- 0 7027 109-11- 0 0.908 5420 56- 4- 0 53- 7- 0 9431 107-12- 1 0.896 5476 53- 6- 1 54- 6- 0 5585 103-16- 1 0.863 4935 53- 6- 1 50-10- 0 7854 96-23- 1 0.804 5130 51- 9- 0 45-14- 1 3753 93-25- 2 0.783 4530 44-16- 0 49- 9- 2 6149 91-29- 0 0.758 4458 49-11- 0 42-18- 0 2153 88-31- 1 0.738 4726 46-13- 1 42-18- 0 9629 87-32- 1 0.729 4608 42-17- 1 45-15- 0 7784 81-34- 5 0.696 4817 47-13- 0 34-21- 5 7052 79-39- 2 0.667 4019 37-22- 1 42-17- 1 4601 77-40- 3 0.654 4557 19-38- 3 58- 2- 0 7920 73-43- 4 0.625 4343 31-26- 3 42-17- 1 2680 73-46- 1 0.613 3971 34-26- 0 39-20- 1 1678 71-48- 1 0.596 3791 36-23- 1 35-25- 0 9487 70-48- 2 0.592 4412 31-28- 1 39-20- 1 7659 67-51- 2 0.567 3691 36-22- 2 31-29- 0 8801 66-52- 2 0.558 3786 32-27- 1 34-25- 1 2303 64-53- 3 0.546 4184 36-21- 3 28-32- 0 9679 65-55- 0 0.542 3648 32-28- 0 33-27- 0 2057 60-52- 8 0.533 3810 22-30- 8 38-22- 0 2654 55-56- 9 0.496 3653 34-18- 8 21-38- 1 8251 57-60- 3 0.488 3614 26-33- 1 31-27- 2 3037 55-61- 4 0.475 3408 32-27- 1 23-34- 3 7708 57-63- 0 0.475 3490 26-34- 0 31-29- 0 6910 55-62- 3 0.471 3363 31-28- 1 24-34- 2 7874 55-62- 3 0.471 3359 31-28- 1 24-34- 2 4734 55-62- 3 0.471 3354 32-27- 1 23-35- 2 9442 54-64- 2 0.458 3378 21-38- 1 33-26- 1 6321 53-64- 3 0.454 3385 31-28- 1 22-36- 2 5719 53-64- 3 0.454 3365 31-28- 1 22-36- 2 9030 53-64- 3 0.454 3365 31-28- 1 22-36- 2 5708 53-65- 2 0.450 3327 31-27- 2 22-38- 0 9020 49-61-10 0.450 3510 31-29- 0 18-32-10 2508 53-66- 1 0.446 3278 20-39- 1 33-27- 0 1055 52-66- 2 0.442 3279 23-36- 1 29-30- 1 6619 50-68- 2 0.425 3246 22-36- 2 28-32- 0 1851 50-68- 2 0.425 3217 22-36- 2 28-32- 0 6817 51-69- 0 0.425 3597 27-33- 0 24-36- 0 3278 49-68- 3 0.421 3531 27-32- 1 22-36- 2 8959 50-69- 1 0.421 3392 20-40- 0 30-29- 1 8549 48-68- 4 0.417 3174 31-29- 0 17-39- 4 2253 49-69- 2 0.417 3170 22-36- 2 27-33- 0 4582 46-72- 2 0.392 3516 18-41- 1 28-31- 1 2865 44-73- 3 0.379 3727 35-23- 2 9-50- 1 9968 44-75- 1 0.371 3199 19-41- 0 25-34- 1 7710 40-80- 0 0.333 3026 7-53- 0 33-27- 0 4315 38-82- 0 0.317 3282 13-47- 0 25-35- 0 4268 35-82- 3 0.304 2971 17-43- 0 18-39- 3 7362 35-83- 2 0.300 2923 16-44- 0 19-39- 2 4060 34-84- 2 0.292 2906 22-37- 1 12-47- 1 6876 34-86- 0 0.283 2906 15-45- 0 19-41- 0 7175 29-89- 2 0.250 2897 15-43- 2 14-46- 0 2782 26-94- 0 0.217 2468 17-43- 0 9-51- 0 1930 24-92- 4 0.217 2848 23-36- 1 1-56- 3 3390 23-97- 0 0.192 2393 12-48- 0 11-49- 0 2622 13-105-2 0.117 2299 7-51- 2 6-54- 0 6668 11-108-1 0.096 1920 7-53- 0 4-55- 1 1095 4-116-0 0.033 1927 2-58- 0 2-58- 0 9772 DISQUALIFIED (took too long) 1286 DISQUALIFIED (illegal move) 1231 DISQUALIFIED (took too long) 1330 DISQUALIFIED (illegal move) 3079 DISQUALIFIED (java.lang.reflect.InvocationTargetException) 6599 DISQUALIFIED (took too long) 8449 DISQUALIFIED (took too long) 1775 DISQUALIFIED (took too long) 2920 DISQUALIFIED (took too long) 2662 DISQUALIFIED (took too long) 6859 DISQUALIFIED (took too long) 9830 DISQUALIFIED (illegal move) 4378 DISQUALIFIED (took too long) 2125 DISQUALIFIED (illegal move) 3718 DISQUALIFIED (illegal move) 8772 DISQUALIFIED (took too long) 5055 DISQUALIFIED (illegal move) 3271 DISQUALIFIED (illegal move) 3660 DISQUALIFIED (java.lang.NullPointerException) 7833 DISQUALIFIED (illegal move) 2674 DISQUALIFIED (took too long) 9269 DISQUALIFIED (illegal move) 2730 DISQUALIFIED (java.lang.reflect.InvocationTargetException) 8047 DISQUALIFIED (illegal move) 1859 DISQUALIFIED (took too long) 2217 DISQUALIFIED (java.lang.NullPointerException) 8082 DISQUALIFIED (illegal move) 4704 DISQUALIFIED (took too long) 4029 DISQUALIFIED (illegal move) 3171 DISQUALIFIED (took too long) 7023 DISQUALIFIED (illegal move) 8450 DISQUALIFIED (java.lang.reflect.InvocationTargetException) 7350 DISQUALIFIED (took too long) 6745 DISQUALIFIED (took too long) 3326 DISQUALIFIED (illegal move) 2921 DISQUALIFIED (took too long) 6913 DISQUALIFIED (took too long) 7291 DISQUALIFIED (took too long) 9976 DISQUALIFIED (took too long) 8534 DISQUALIFIED (took too long) 7005 DISQUALIFIED (illegal move) 2250 DISQUALIFIED (java.lang.NullPointerException) 7761 DISQUALIFIED (java.lang.reflect.InvocationTargetException) 2196 DISQUALIFIED (illegal move) 3450 DISQUALIFIED (illegal move) 6826 DISQUALIFIED (illegal move) 1172 DISQUALIFIED (took too long)
Based on "Tournament Results," by Alex Thornton, Fall 2007; used with the author's permission. Updated with each quarter's tournament results.
Revised to reflect ICS 23 Winter 2008's tournament by Norman Jacobson, December 2007.
Minor revisions for clarity by Norman Jacobson, February 2009, April 2010 and April 2011.