diff --git a/sudoku/__init__.py b/sudoku/__init__.py index 130b175..3cb0572 100644 --- a/sudoku/__init__.py +++ b/sudoku/__init__.py @@ -68,8 +68,12 @@ class Sudoku: return self._possible_values def possible_values_for_square(self, x, y): - peers = self.peers(x, y) - return self.possible_values - peers + value = self.get(x, y) + if value: + return {value} + else: + peers = self.peers(x, y) + return self.possible_values - peers @property def rows(self): diff --git a/sudoku/solvers/dlx.py b/sudoku/solvers/dlx.py index e3657e0..39e4b98 100644 --- a/sudoku/solvers/dlx.py +++ b/sudoku/solvers/dlx.py @@ -124,7 +124,7 @@ def _build_headers(sudoku): def _build_rows(sudoku, headers): for (index, coords) in enumerate(sudoku.all_squares): board_value = sudoku.get(*coords) - possibilities = {board_value} if board_value else sudoku.possible_values_for_square(*coords) + possibilities = sudoku.possible_values_for_square(*coords) for value in possibilities: cur = None for col in headers.iterate_row():