X-Git-Url: https://harishankar.org/repos/?p=getaclue.git;a=blobdiff_plain;f=crosswordpuzzle.py;fp=crosswordpuzzle.py;h=8091d3d8091f69e8df1ac378e842e39343c394f5;hp=9617897fddada51883187489cdb2153e268ab6f6;hb=c2031a5fe0f3aa317c011a2f221ea6efc69c0c3d;hpb=8e802b4a6d2d5af14810a2b6603fd53b2697c039 diff --git a/crosswordpuzzle.py b/crosswordpuzzle.py index 9617897..8091d3d 100644 --- a/crosswordpuzzle.py +++ b/crosswordpuzzle.py @@ -50,6 +50,11 @@ class NoWordException (Exception): def __init__ (self, row, col): self.pos = (row, col) +# exception when no words are present in the grid +class NoWordsException (Exception): + def __init__ (self): + self.msg = "No words in grid" + class CrosswordPuzzle: def __init__ (self, rows, cols): # define number of rows and columns @@ -68,6 +73,38 @@ class CrosswordPuzzle: for j in range (cols): self.data[i].append (GridItem ()) + # get all the clues for across + def get_clues_across (self): + clues = [] + # traverse the grid + for row in range (self.rows): + for col in range (self.cols): + if (self.data[row][col].occupied_across is True and + self.data[row][col].across_start is True): + word_across = self.get_word_across (row, col) + clues.append ((word_across, self.data[row][col].clue_across)) + # if no across words are found at all + if not clues: + raise NoWordsException + + return clues + + # get all the clues for down + def get_clues_down (self): + clues = [] + # traverse the grid + for row in range (self.rows): + for col in range (self.cols): + if (self.data[row][col].occupied_down is True and + self.data[row][col].down_start is True): + word_down = self.get_word_down (row, col) + clues.append ((word_down, self.data[row][col].clue_down)) + # if no down words are found at all + if not clues: + raise NoWordsException + + return clues + # getting a down word at a position def get_word_down (self, row, col): # if index is out of bounds