From 2529533661da0d229d00651f3599c30cf8d57b79 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Mon, 16 Oct 2017 12:40:29 -0700 Subject: [PATCH] Adjust possible_values_for_square to behave like dlx expects --- sudoku/__init__.py | 8 ++++++-- sudoku/solvers/dlx.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) 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():