Возникла такая проблемка: есть некий список (дерево) классов. В классах основным атрибутом является матрица 8*8, отвечающая за расстановку фигур на шахматной доске. Нужно расставить фигуры так, чтобы они не угрожали друг другу. Решаю пока что самым примитивным перебором всех вариантов.
class Board:
def __init__(self, board = None):
if not board:
self.board = [[0 for i in range(8)] for j in range(8)]
else:
self.board = copy.copy(board)
class PossibleBoard(Board):
def __init__(self, level, free_cells, parent, brd=None):
Board.__init__(self, board = brd)
self.level = level
self.free_cells = free_cells
self.parent = parent
class Work:
def __init__(self, figures):
self.figures = figures
self.board = PossibleBoard(0, 64, None)
self.result = [list() for i in range(len(self.figures)+1)]
self.result[0].append(self.board)
...
def set_queen(self, brd):
for x in range(8):
for y in range(8):
if not (brd.board)[x][y]:
tmp_board = PossibleBoard(self.level,
brd.free_cells-1,
copy.copy(brd),
copy.copy(brd.board))
(tmp_board.board)[x][y] = 'Q'
for i in range(8):
for j in range(8):
if (i==x or j==y or (abs(x-i)==abs(y-j)) ) and tmp_board.board[i][j]==0:
tmp_board.board[i][j] = 1
tmp_board.free_cells-=1
self.result[self.level].append(tmp_board)
P.S. готов также выслушать комментарии по оптимизации данных кусков кода.