У меня есть небольшая система, которая должна решать судоку с использованием алгоритма поиска с возвратом, и она представлена в форме класса Sudoku_Grid_System()
. Метод solve()
предполагает изменение значений из списка sudoku_grid
. Я видел много ответов на похожий вопрос, и мой код (по крайней мере, для меня) кажется правильным, но он не работает - после вызова метода solve()
sudoku_grid
возвращается в исходное состояние. Очевидно, я упускаю что-то важное. Пожалуйста, взгляните на код:
class Sudoku_Grid_System():
sudoku_grid = [ [5,3,0,0,7,0,0,0,0],
[6,0,0,1,9,5,0,0,0],
[0,9,8,0,0,0,0,6,0],
[8,0,0,0,6,0,0,0,3],
[4,0,0,8,0,3,0,0,1],
[7,0,0,0,2,0,0,0,6],
[0,6,0,0,0,0,2,8,0],
[0,0,0,4,1,9,0,0,5],
[0,0,0,0,8,0,0,7,9] ]
def __init__(self, window, grid_image, x, y):
self.window = window
self.grid_image = pygame.image.load(grid_image)
self.x = x
self.y = y
......
def solve(self):
for i in range(9):
for j in range(9):
if self.sudoku_grid[i][j] == 0:
for n in range(1, 10):
if self.is_possible(i, j, n):
self.sudoku_grid[i][j] = n
self.solve()
self.sudoku_grid[i][j] = 0
return
Когда программа выходит из циклов в методе solve()
выше, отладчик сообщает мне, что значения sudoku_grid
такие:
[5, 3, 4, 6, 7, 8, 9, 1, 2] [6, 7, 2, 1, 9, 5, 3, 4, 8] [1, 9, 8, 3, 4, 2, 5, 6, 7] etc...
Но сразу после выхода из метода solve()
атрибут sudoku_grid
возвращается в исходное состояние, которое выглядит следующим образом:
[5, 3, 0, 0, 7, 0, 0, 0, 0] [6, 0, 0, 1, 9, 5, 0, 0, 0] [0, 9, 8, 0, 0, 0, 0, 6, 0] etc...
Как сделать так, чтобы sudoku_grid
оставался измененным после всех изменений в solve()
?