psl@petrus.UUCP (Peter Langston) (01/23/86)
> ... I don't particularly like this lettering > because it adds a mildly annoying complication to Go programs, but it seems > to be the international standard. I believe it was used in the first USENIX > Computer Go tournament, for example. Correct on both counts; it's ugly and it's what we use. Think of it as an overly rational society bowing to tradition (if a somewhat dubious tradition). I'm including the current rules for the Usenix GO Tournament (in their nroff form) for two reasons. We're going to do it again at the Summer Usenix (unless I can weasel out and keep the title away from Bruce for another year), and several people have asked questions that these rules may help answer. In a later posting I will provide the automated referee that we use so people can try it out with their programs. I'd like to have lots of entrants this time (if only as protective cover when Nemesis goes gunning for Oog). ------------------------------------------------------------------------- .de n .sp \\n+n) .. .nr n 0 1 .de l .sp .. .na .nh .ll 7.5i .sp 2 .ce 99 USENIX COMPUTER GO TOURNAMENT REVISED RULES October, 1984 Peter Langston .ce 0 .n A full size board will be used. .l The board will be 19 x 19 with columns labeled 'A' through 'T' (excluding 'I') left to right, and rows labeled '19' through '1', top to bottom. .n There will be a time limit. .l Each program will be limited to a total of 60 minutes of accumulated "user" time. If a program goes over the time limit it will only be allowed 10 seconds of "user" time for each move (byo-romi). If a program goes over the time limit and uses more than 10 seconds of "user" time for a move it will immediately forfeit the game. .n There will be no forking (around). .l For various reasons each program must be a single process and must not fork other processes. Forking interferes with the timing mechanism and, like any attempt to evade or fool the timing, would result in a forfeit. .n A "referee" program will be used. .l The tournament will use a "referee" program to execute each competing pair of programs. There will be no command-line arguments, i.e. argc will be 1. All communication with the programs will be via the standard input and standard output thus the programs must understand a specific set of commands and generate output of a specific form. .l INPUT .in +0.5i .l All input commands to the competing programs will be in the form of lines of text appearing on the standard input and terminated by a newline. .l .ti -3 a) The first line of input to each program will be either "black" or "white" (lower case) to indicate which color the program will be playing (and thereby whether the program goes first or second). .l .ti -3 b) The placement of a stone will be expressed as letter-number (e.g. "G7"). Note that the letter is capitalized. Also note that the letter "I" is not included. .l .ti -3 c) A pass will be expressed as "pass" (lower case). .l .ti -3 d) The command "byo-romi" (lower case) means the time limit has been exceeded and all further moves must be generated within the 10 second time limit. .in -0.5i .l OUTPUT .in +0.5i .l All output from the competing programs will be in the form of lines of characters sent to the "standard output", terminated by a newline, and had better either be flushed after every line or be unbuffered to start with (e.g. via the use of "setbuf(stdout, 0);"). .l .ti -3 a) The placement of a stone must be expressed as letter-number (e.g. "G12"). Note that the letter is upper case and that "I" is not included. .l .ti -3 b) A pass must be expressed as "pass" (lower case). .l .ti -3 c) Any other output lines will be considered garbage and ignored. .in -0.5i .n "Bad" moves are a forfeit. .l Any syntactically correct but semantically illegal move will be considered a forfeit. The three types of illegal move are: playing on a non-empty spot (already occupied or off the board), ko violation, and suicides. .n The programs must not be idle unnecessarily. .l This rule is included to avoid the cases where a program loses synchronization and is waiting for input at the same time the referee program is waiting for input. As an arbitrary measure, if 10 minutes of "real" time elapse with no increase in "user" time it will be assumed that the program is stuck. In such a case the program will forfeit. (Otherwise the program "for (;;) read(0, buf, sizeof buf);" would never lose a match!) .n Play will continue until both programs pass in sequence. .l The programs may pass at any time, but once both pass concurrently the gameplay is over. .n The decisions of the judge will be final. .l A human judge will evaluate each game's results and may fill in missed dame or may judge a game incomplete if too much is unresolved. Japanese rules will be used, (Nihon Kiin). .n Komi will be 5.5 points. .l The second player gets a 5.5 point bonus. .sp .l Comments, suggestions, contributions, etc. should be sent to Peter Langston by whatever means available. One possibility is uucp to bellcore!psl, another is U.S. Mail to Peter Langston / Bell Communications Research / MRE 2E-338 / 435 South Street / Morristown, NJ 07960 .pl 1 --------------------------------------------------------------------- Peter Langston bellcore!psl