Advertisement
Guest User

Untitled

a guest
Jan 29th, 2012
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.53 KB | None | 0 0
  1.  
  2. class Sudoku_chart():
  3.     def __init__(self, dim=9, block_dim=3):
  4.             self.dim=dim            #размер матрицы (9*9)
  5.             self.block_dim=block_dim        #размер блока    (3*3)
  6.             self.matrix=map(list,[[None]*dim]*dim)
  7.        
  8.     def _get_row(self, row):
  9.             return self.matrix[row]
  10.  
  11.     def _get_col(self, col):
  12.             return [row[col] for row in self.matrix]
  13.        
  14.     def _get_block(self, block_x, block_y): #x, y - координаты блока     (00,    01, 02)
  15.             x=self.block_dim*block_x        #               (10,    11, 12)
  16.             y=self.block_dim*block_y        #               (20,    21, 22)
  17.            
  18.             values=set()
  19.             for row in self.matrix[y:y+self.block_dim]:
  20.                 values.update(row[x:x+self.block_dim])
  21.             return values
  22.  
  23.         def get_cross(self, row, col):
  24.             values=set()
  25.             values.update(self._get_row(row),
  26.                           self._get_col(col),
  27.                           self._get_block(col/self.block_dim,
  28.                                           row/self.block_dim))
  29.             return values
  30.        
  31.     def set_cell(self, row, col, value):
  32.             self.matrix[row][col]=value
  33.  
  34.         def __repr__(self):
  35.             output=str()
  36.             for row in self.matrix:
  37.                 for block in xrange(0, self.dim, self.block_dim):
  38.                     for val in row[block:block+self.block_dim]:
  39.                         output+=str(val)+', '
  40.                     output+='\t'
  41.                 output+='\n'
  42.             return output
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement