diff --git a/shenzhen_solitaire/board_actions.py b/shenzhen_solitaire/board_actions.py index cd0dc8b..0d91258 100644 --- a/shenzhen_solitaire/board_actions.py +++ b/shenzhen_solitaire/board_actions.py @@ -16,15 +16,15 @@ class Action: pass def apply(self, action_board: board.Board) -> None: - #print(f"Applying {str(self)}") assert self._before_state == 0 assert self._after_state == 0 - self._before_state = action_board.state_identifier + if __debug__: + self._before_state = action_board.state_identifier self._apply(action_board) - self._after_state = action_board.state_identifier + if __debug__: + self._after_state = action_board.state_identifier def undo(self, action_board: board.Board) -> None: - #print(f"Undoing {str(self)}") assert action_board.state_identifier == self._after_state self._undo(action_board) assert action_board.state_identifier == self._before_state diff --git a/shenzhen_solitaire/solver.py b/shenzhen_solitaire/solver.py index 9cd0a51..c24b938 100644 --- a/shenzhen_solitaire/solver.py +++ b/shenzhen_solitaire/solver.py @@ -56,6 +56,11 @@ class SolitaireSolver: def solve(self) -> Iterator[List[board_actions.Action]]: while self.stack: + if len(self.stack) == -1: + self.stack.pop() + self.stack.action_stack[-1].undo(self.search_board) + assert (self.search_board.state_identifier + in self.state_set) assert (self.search_board.state_identifier == self.stack.state_stack[-1])