diff --git a/sudoku/__init__.py b/sudoku/__init__.py index 0865e3f..92d92ae 100644 --- a/sudoku/__init__.py +++ b/sudoku/__init__.py @@ -162,7 +162,6 @@ class Sudoku: if idx in self._clues: raise SquareIsClue('Cannot set clue square ({},{})'.format(x, y)) self._board[idx] = value - print('({},{}) <- {} {!r}'.format(x, y, value, self)) def _xy_to_idx(self, x, y): return y * self.row_size + x diff --git a/sudoku/solvers/backtracker.py b/sudoku/solvers/backtracker.py index fd0f6a0..d58fad2 100644 --- a/sudoku/solvers/backtracker.py +++ b/sudoku/solvers/backtracker.py @@ -26,8 +26,10 @@ def _solve_square(sudoku, x, y): continue except NoPossibleValues: # Need to backtrack. - sudoku.unset(x, y) - raise Backtrack() + should_backtrack = True + break + + print('\r{!r}'.format(sudoku), end='', flush=True) next_coord = _next_coord(sudoku, x, y) if not next_coord: @@ -40,13 +42,14 @@ def _solve_square(sudoku, x, y): continue if should_backtrack: - # Unhandled backtrack. Pop out of this one too. try: sudoku.unset(x, y) except SquareIsClue: pass raise Backtrack() + print() + return sudoku def _next_coord(sudoku, x, y):