Memoize possible_values set

This commit is contained in:
Eryn Wells 2017-10-11 19:42:11 -07:00
parent 1549269661
commit f7b6fb053f

View file

@ -20,6 +20,7 @@ class Sudoku:
else: else:
self._board = bytearray(sz4) self._board = bytearray(sz4)
self._clues = frozenset() self._clues = frozenset()
self._possible_values = None
@property @property
def size(self): def size(self):
@ -62,7 +63,9 @@ class Sudoku:
The set of valid values for any grid square. This method does not account for values made invalid by already The set of valid values for any grid square. This method does not account for values made invalid by already
being present in a peer of a given square. being present in a peer of a given square.
''' '''
return set(range(1, self.row_size + 1)) if not self._possible_values:
self._possible_values = set(range(1, self.row_size + 1))
return self._possible_values
@property @property
def rows(self): def rows(self):