Clear grid and verify solution implemented
[getaclue.git] / crosswordpuzzle.py
index ffdd915..7ee206f 100644 (file)
@@ -119,6 +119,11 @@ class NoWordsException (Exception):
        def __init__ (self):
                self.msg = "No words in grid"
 
+# exception to raise when solution is imcomplete when trying to verify it
+class IncompleteSolutionException (Exception):
+       def __init__ (self):
+               self.msg = "Solution incomplete"
+
 class CrosswordPuzzle:
        def __init__ (self, rows, cols):
                # define number of rows and columns
@@ -643,4 +648,31 @@ class CrosswordPuzzle:
                        for col in range (self.cols):
                                self.data[row][col].revealed = revealed
 
+       # clear the guesses for the board
+       def clear_guesses (self):
+               # run through the grid and set the guesses to None
+               for row in range (self.rows):
+                       for col in range (self.cols):
+                               self.data[row][col].guess = None
+
+       # verify the solution - return True if all guessed characters are correct
+       # return False if some of them are wrong.
+       # if the board is not completed as yet, raise a IncompleteSolutionException
+       def is_solution_correct (self):
+               # run through the grid and check for each character in occupied cells
+               flag = True
+               for row in range (self.rows):
+                       for col in range (self.cols):
+                               if (self.data[row][col].occupied_across is True or
+                                       self.data[row][col].occupied_down is True):
+                                       # if there is no guess at a particular location raise
+                                       # the incomplete solution exception
+                                       if not self.data[row][col].guess:
+                                               raise IncompleteSolutionException
+                                       # if a character doesn't match, return False
+                                       if self.data[row][col].char <> self.data[row][col].guess:
+                                               flag = False
+
+               # finally return result
+               return flag