Je développe un solveur de sudoku en Python.Comprendre la récursivité et les piles en Python
def backtrack(puzzle):
x,y,candidates=findSquare(puzzle)
if x==-1 and y==-1:
return puzzle #stop condition
while len(candidates[x][y])>0:
puzzle[x][y]=candidates[x][y].pop()
puzzler=backtrack(puzzle)
if isValid(puzzler):
return puzzler
return False
C'est un algorithme qui fait essentiellement des suppositions. Quand une estimation est fausse, elle passe à la proposition suivante (la boucle while).
Le problème que j'ai est le puzzle variable, le puzzle de sudoku. Quand une supposition est fausse, la boucle while va aux prochains candidats. Le puzzle variable inclut maintenant les modifications apportées par les étapes supplémentaires de la récursivité, même si les étapes étaient fausses. Je ne comprends pas cela, les autres variables sont uniques à chaque pile de récursivité, ne devrait pas rester le même.
N'hésitez pas à demander des explications supplémentaires.
Merci, monsieur. deepcopy a tout changé. puzzler = backtrack (copy.deepcopy (puzzle)) est la solution, merci. –