Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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))