[gnome-games] sudoku: Fix solver for new conflict resolution code



commit 277f2dc91426066296abfa1c3fdf1952fcc0fb68
Author: Jim Ross <jimbo dimensia com>
Date:   Sat Apr 10 21:24:02 2010 -0400

    sudoku: Fix solver for new conflict resolution code
    
    GNOME bug #608907

 gnome-sudoku/src/lib/sudoku.py |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/gnome-sudoku/src/lib/sudoku.py b/gnome-sudoku/src/lib/sudoku.py
index aa4fda2..7d0a62b 100644
--- a/gnome-sudoku/src/lib/sudoku.py
+++ b/gnome-sudoku/src/lib/sudoku.py
@@ -111,6 +111,7 @@ class SudokuGrid(object):
         self.cols = []
         self.rows = []
         self.boxes = []
+        self.conflicts = ParallelDict()
         self.group_size = int(group_size)
         self.verbose = False
         self.gen_set = set(range(1, self.group_size + 1))
@@ -347,12 +348,20 @@ class SudokuSolver (SudokuGrid):
                                            ('Row', self.row_coords, self.rows),
                                            ('Box', self.box_coords, self.boxes)]:
             for n, coord_set in coord_dic.items():
+                skip_set = False
+                for coord in coord_set:
+                    if self.conflicts.has_key(coord):
+                        skip_set = True
+                        break
+                if skip_set:
+                    continue
                 needs = dict([(n, False) for n in range(1, self.group_size + 1)])
                 for coord in coord_set:
                     val = self._get_(*coord)
                     if val:
                         # We already have this value set...
-                        del needs[val]
+                        if needs.has_key(val):
+                            del needs[val]
                     else:
                         # Otherwise, register ourselves as possible
                         # for each number we could be
@@ -510,7 +519,6 @@ class InteractiveSudoku (SudokuSolver):
     solving."""
     def __init__ (self, grid = False, verbose = False, group_size = 9):
         SudokuSolver.__init__(self, grid, verbose, group_size)
-        self.conflicts = ParallelDict()
         self.cleared_conflicts = []
 
     def to_string (self):



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]