Add peers and index_peers for a given (x,y)
This commit is contained in:
parent
19a9bc9d37
commit
00225aca44
1 changed files with 10 additions and 0 deletions
10
sudoku.py
10
sudoku.py
|
@ -60,6 +60,16 @@ class Sudoku:
|
||||||
dim = self.dimension
|
dim = self.dimension
|
||||||
return (self._square(x, y, dim) for y in range(dim) for x in range(dim))
|
return (self._square(x, y, dim) for y in range(dim) for x in range(dim))
|
||||||
|
|
||||||
|
def peers(self, x, y):
|
||||||
|
return {self._board[i] for i in self.index_peers(x, y) if self._board[i] != 0}
|
||||||
|
|
||||||
|
def index_peers(self, x, y):
|
||||||
|
dim = self.dimension
|
||||||
|
sz = self.size
|
||||||
|
sz2 = sz ** 2
|
||||||
|
sq_x, sq_y = int(x / dim), int(y / dim)
|
||||||
|
return set(self._row(y, sz)) | set(self._column(x, sz, sz2)) | set(self._square(sq_x, sq_y, dim))
|
||||||
|
|
||||||
# TODO: Break the above into helper methods that produce a single thing given an index.
|
# TODO: Break the above into helper methods that produce a single thing given an index.
|
||||||
def _row(self, r, size):
|
def _row(self, r, size):
|
||||||
return range(r * size, r * size + size)
|
return range(r * size, r * size + size)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue