私はPythonでsudokuソルバーを開発しています。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
これは、基本的に推測を行うアルゴリズムです。推測が間違っている場合、次の推測(whileループ)に進みます。
私が持っている問題は、可変パズル、スドクパズルです。推測が間違っている場合、whileループは次の候補に移動します。変数パズルには、ステップが誤って推測されたにもかかわらず、再帰のさらなるステップによって行われた変更が含まれるようになりました。私はこれを理解していない、他の変数は、それぞれの再帰スタックに固有のものであり、同じようにとどまるべきではない。
追加の説明を躊躇しないでください。
にそれを与えるだろう、ありがとうございます。 deepcopyはすべてを変更しました。 puzzler = backtrack(copy.deepcopy(puzzle))は解決策です、ありがとうございます。 –