static void benchmark(int num_games_per_point) { int i, j; unsigned int random_seed = 1U; board_size = 9; komi = 0.5; init_brown(random_seed); for (i = 0; i < board_size; i++) { for (j = 0; j < board_size; j++) { int white_wins = 0; int black_wins = 0; int k; for (k = 0; k < num_games_per_point; k++) { int passes = 0; int num_moves = 1; int color = WHITE; clear_board(); play_move(i, j, BLACK); while (passes < 3 && num_moves < 600) { int m, n; generate_move(&m, &n, color); play_move(m, n, color); if (pass_move(m, n)) { passes++; } else { passes = 0; } num_moves++; color = OTHER_COLOR(color); } if (passes == 3) { if (compute_score() > 0) { white_wins++; } else { black_wins++; } } } /* printf("%d %d %f\n", i, j, (float) black_wins / (float) (black_wins + white_wins)); */ } } }
static int gtp_boardsize(char *s) { int boardsize; if (sscanf(s, "%d", &boardsize) < 1) return gtp_failure("boardsize not an integer"); if (boardsize < MIN_BOARD || boardsize > MAX_BOARD) return gtp_failure("unacceptable size"); board_size = boardsize; gtp_internal_set_boardsize(boardsize); init_brown(); return gtp_success(""); }
int main(int argc, char **argv) { unsigned int random_seed = 1; /* Optionally a random seed can be passed as an argument to the program. */ if (argc > 1) sscanf(argv[1], "%u", &random_seed); srand(random_seed); /* Make sure that stdout is not block buffered. */ setbuf(stdout, NULL); /* Inform the GTP utility functions about the initial board size. */ gtp_internal_set_boardsize(board_size); /* Initialize the board. */ init_brown(); /* Process GTP commands. */ gtp_main_loop(commands, stdin, NULL); return 0; }