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
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