def make_move_in_state(self, state: State) -> int: grid = Grid.from_state(state) assert len(grid.available_moves) > 0, 'No move available' finishing_move = self._finishing_move_in(grid) if finishing_move is not None: return finishing_move if (state, self._color) not in self._tree.keys(): self._tree[(state, self._color)] = NodeInfo(visits=0, is_leaf=True, wins=0) self._compute(grid) return self._pick_most_visited_child_of(grid)
def make_move_in_state(self, state: State) -> int: self._deadline.clear() Timer(self._timeout, lambda: self._deadline.set()).start() return self._iterative_deepening(Grid.from_state(state))