Vor allem Entschuldigung für mein Englisch.Backtracking in Erlang
Ich möchte einen Backtracking-Algorithmus in Erlang verwenden. Es würde als ein Rätsel dienen, um teilweise gefüllte Sudokus zu lösen. Ein 9x9-Sudoku wird als eine Liste von 81 Elementen gespeichert, wobei jedes Element die mögliche Anzahl speichert, die in diese Zelle gehen kann.
Für ein 4x4 Sudoku sieht meine ursprüngliche Lösung so aus: [[1], [3], [2], [4], [4], [2], [3], [1], [ 2,3], [4], [1], [2,3], [2,3], [1], [4], [2,3]]
Dieses Sudoku hat 2 Lösungen. Ich muss beide aufschreiben. Nachdem diese anfängliche Lösung erreicht ist, muss ich einen Backtracking-Algorithmus implementieren, aber ich weiß nicht, wie ich es machen soll.
Mein Gedanke ist, die festen Elemente in eine neue Liste namens "fixedlist" zu schreiben, die die Zellen für mehrere Lösungen in [] ändert.
Für das oben genannte Beispiel sieht die feste Liste folgendermaßen aus: [[1], [3], [2], [4], [4], [2], [3], [1], [ ], [4], [1], [], [], [1], [4], []]
Von hier habe ich eine "Probe", ich suche die niedrigste Länge in der Lösungsliste welche ist nicht gleich 1, und ich versuche die erste mögliche Anzahl dieser Zelle und ich lege es auf diese feste Liste. Hier habe ich einen Algorithmus, um die Zellen zu aktualisieren und zu prüfen, ob es immer noch ein lösbares Sudoku ist oder nicht. Wenn nicht, weiß ich nicht, wie ich einen Schritt zurücktreten und einen neuen versuchen soll. Ich kenne den Pseudo-Code davon und ich kann es für Imperativ-Sprachen verwenden, aber nicht für Erlang. (Prolog tatsächlich Backtrack-Algorithmus implementiert, aber erlang nicht)
Irgendeine Idee?
Sind Sie immer noch daran interessiert, ich habe einige Arbeit mit diesem jetzt getan und kann Ihnen helfen, wenn Sie es wünschen. Sie können meine ID hier als Mailadresse in Google Mail verwenden. – rvirding