def test_parsing_9x9(self): self.assertEqual(coords.from_sgf('aa'), (0, 0)) self.assertEqual(coords.from_sgf('ac'), (2, 0)) self.assertEqual(coords.from_sgf('ca'), (0, 2)) self.assertEqual(coords.from_sgf(''), None) self.assertEqual(coords.to_sgf(None), '') self.assertEqual('aa', coords.to_sgf(coords.from_sgf('aa'))) self.assertEqual('sa', coords.to_sgf(coords.from_sgf('sa'))) self.assertEqual((1, 17), coords.from_sgf(coords.to_sgf((1, 17)))) self.assertEqual(coords.from_kgs(utils_test.BOARD_SIZE, 'A1'), (8, 0)) self.assertEqual(coords.from_kgs(utils_test.BOARD_SIZE, 'A9'), (0, 0)) self.assertEqual(coords.from_kgs(utils_test.BOARD_SIZE, 'C2'), (7, 2)) self.assertEqual(coords.from_kgs(utils_test.BOARD_SIZE, 'J2'), (7, 8)) self.assertEqual(coords.from_pygtp(utils_test.BOARD_SIZE, (1, 1)), (8, 0)) self.assertEqual(coords.from_pygtp(utils_test.BOARD_SIZE, (1, 9)), (0, 0)) self.assertEqual(coords.from_pygtp(utils_test.BOARD_SIZE, (3, 2)), (7, 2)) self.assertEqual(coords.to_pygtp(utils_test.BOARD_SIZE, (8, 0)), (1, 1)) self.assertEqual(coords.to_pygtp(utils_test.BOARD_SIZE, (0, 0)), (1, 9)) self.assertEqual(coords.to_pygtp(utils_test.BOARD_SIZE, (7, 2)), (3, 2)) self.assertEqual(coords.to_kgs(utils_test.BOARD_SIZE, (0, 8)), 'J9') self.assertEqual(coords.to_kgs(utils_test.BOARD_SIZE, (8, 0)), 'A1')
def test_parsing_9x9(self): self.assertEqual(coords.from_sgf('aa'), (0, 0)) self.assertEqual(coords.from_sgf('ac'), (2, 0)) self.assertEqual(coords.from_sgf('ca'), (0, 2)) self.assertEqual(coords.from_sgf(''), None) self.assertEqual(coords.to_sgf(None), '') self.assertEqual( 'aa', coords.to_sgf(coords.from_sgf('aa'))) self.assertEqual( 'sa', coords.to_sgf(coords.from_sgf('sa'))) self.assertEqual( (1, 17), coords.from_sgf(coords.to_sgf((1, 17)))) self.assertEqual(coords.from_kgs('A1'), (8, 0)) self.assertEqual(coords.from_kgs('A9'), (0, 0)) self.assertEqual(coords.from_kgs('C2'), (7, 2)) self.assertEqual(coords.from_kgs('J2'), (7, 8)) self.assertEqual(coords.from_pygtp((1, 1)), (8, 0)) self.assertEqual(coords.from_pygtp((1, 9)), (0, 0)) self.assertEqual(coords.from_pygtp((3, 2)), (7, 2)) self.assertEqual(coords.to_pygtp((8, 0)), (1, 1)) self.assertEqual(coords.to_pygtp((0, 0)), (1, 9)) self.assertEqual(coords.to_pygtp((7, 2)), (3, 2)) self.assertEqual(coords.to_kgs((0, 8)), 'J9') self.assertEqual(coords.to_kgs((8, 0)), 'A1')
def test_pass(self): self.assertEqual(coords.from_sgf(''), None) self.assertEqual(coords.from_flat(81), None) self.assertEqual(coords.from_kgs('pass'), None) self.assertEqual(coords.from_pygtp((0, 0)), None) self.assertEqual(coords.to_sgf(None), '') self.assertEqual(coords.to_flat(None), 81) self.assertEqual(coords.to_kgs(None), 'pass') self.assertEqual(coords.to_pygtp(None), (0, 0))
def test_topleft(self): self.assertEqual(coords.from_sgf('ia'), (0, 8)) self.assertEqual(coords.from_flat(utils_test.BOARD_SIZE, 8), (0, 8)) self.assertEqual(coords.from_kgs(utils_test.BOARD_SIZE, 'J9'), (0, 8)) self.assertEqual(coords.from_pygtp(utils_test.BOARD_SIZE, (9, 9)), (0, 8)) self.assertEqual(coords.to_sgf((0, 8)), 'ia') self.assertEqual(coords.to_flat(utils_test.BOARD_SIZE, (0, 8)), 8) self.assertEqual(coords.to_kgs(utils_test.BOARD_SIZE, (0, 8)), 'J9') self.assertEqual(coords.to_pygtp(utils_test.BOARD_SIZE, (0, 8)), (9, 9))
def test_upperleft(self): self.assertEqual(coords.from_sgf('aa'), (0, 0)) self.assertEqual(coords.from_flat(0), (0, 0)) self.assertEqual(coords.from_kgs('A9'), (0, 0)) self.assertEqual(coords.from_pygtp((1, 9)), (0, 0)) self.assertEqual(coords.to_sgf((0, 0)), 'aa') self.assertEqual(coords.to_flat((0, 0)), 0) self.assertEqual(coords.to_kgs((0, 0)), 'A9') self.assertEqual(coords.to_pygtp((0, 0)), (1, 9))
def test_topleft(self): self.assertEqual(coords.from_sgf('ia'), (0, 8)) self.assertEqual(coords.from_flat(8), (0, 8)) self.assertEqual(coords.from_kgs('J9'), (0, 8)) self.assertEqual(coords.from_pygtp((9, 9)), (0, 8)) self.assertEqual(coords.to_sgf((0, 8)), 'ia') self.assertEqual(coords.to_flat((0, 8)), 8) self.assertEqual(coords.to_kgs((0, 8)), 'J9') self.assertEqual(coords.to_pygtp((0, 8)), (9, 9))
def test_pass(self): self.assertEqual(coords.from_sgf(''), None) self.assertEqual(coords.from_flat(utils_test.BOARD_SIZE, 81), None) self.assertEqual(coords.from_kgs(utils_test.BOARD_SIZE, 'pass'), None) self.assertEqual(coords.from_pygtp(utils_test.BOARD_SIZE, (0, 0)), None) self.assertEqual(coords.to_sgf(None), '') self.assertEqual(coords.to_flat(utils_test.BOARD_SIZE, None), 81) self.assertEqual(coords.to_kgs(utils_test.BOARD_SIZE, None), 'pass') self.assertEqual(coords.to_pygtp(utils_test.BOARD_SIZE, None), (0, 0))
def test_upperleft(self): self.assertEqual(coords.from_sgf('aa'), (0, 0)) self.assertEqual(coords.from_flat(utils_test.BOARD_SIZE, 0), (0, 0)) self.assertEqual(coords.from_kgs(utils_test.BOARD_SIZE, 'A9'), (0, 0)) self.assertEqual(coords.from_pygtp(utils_test.BOARD_SIZE, (1, 9)), (0, 0)) self.assertEqual(coords.to_sgf((0, 0)), 'aa') self.assertEqual(coords.to_flat(utils_test.BOARD_SIZE, (0, 0)), 0) self.assertEqual(coords.to_kgs(utils_test.BOARD_SIZE, (0, 0)), 'A9') self.assertEqual(coords.to_pygtp(utils_test.BOARD_SIZE, (0, 0)), (1, 9))
def cmd_mg_genmove(self, arguments): """Like regular genmove but reports the MCTS status periodically. Args: arguments: A string containing how many calls to tree_search should be made between reporting the MCTS status. """ game = self._game start = time.time() debug_interval = int(arguments) current_readouts = game.root.N # This rather strange initial value means that the search status will # be reported after the very first call to tree_search, rather than # after debug_interval calls. last_dbg = -debug_interval leaves = None num_readouts = game.simulations_per_move while game.root.N < current_readouts + num_readouts: search_result = game.tree_search() if search_result: leaves = search_result if game.root.N - last_dbg > debug_interval: last_dbg = game.root.N self._minigui_report_search_status(leaves) move = game.pick_move() duration = time.time() - start self._minigui_report_search_status(leaves) dbg("") dbg(game.root.describe()) if game.should_resign(): game.set_result(-1 * game.root.position.to_play, was_resign=True) # Tell the game object that we're passing to update the root node. # This is required to ensure that subsequents calls to gamestate # return the correct information. game.play_move(None) return gtp.RESIGN game.play_move(move) if game.root.is_done(): game.set_result(game.root.position.result(), was_resign=False) dbg("") dbg(game.root.position.__str__(colors=False)) dbg("%d readouts, %.3f s/100. (%.2f sec)", num_readouts, duration / num_readouts * 100.0, duration) dbg("") return gtp.gtp_vertex(coords.to_pygtp(move))
def get_move(self, color): self.accomodate_out_of_turn(color) move = self.suggest_move(self.position) if self.should_resign(): return gtp.RESIGN return coords.to_pygtp(self.board_size, move)
def get_move(self, color): self.accomodate_out_of_turn(color) move = self.suggest_move(self.position) if self.should_resign(): return gtp.RESIGN return coords.to_pygtp(move)