まず第一に私の英語をごめんなさい。
Erlangでバックトラッキングアルゴリズムを使用したいと思います。部分的に満たされた数独を解くための推測として役立ちます。9x9数独は、81個の要素のリストとして保存され、すべての要素には、そのセルに入る可能性のある数が保存されます。
4x4数独の場合、私の最初のソリューションは次のようになります:[[1]、[3]、[2]、[4]、[4]、[2]、[3]、[1]、[2,3]、 [4]、[1]、[2,3]、[2,3]、[1]、[4]、[2,3]]
この数独には2つの解決策があります。私はそれらの両方を書き出す必要があります。その最初の解決策に達した後、バックトラッキングアルゴリズムを実装する必要がありますが、それを作成する方法がわかりません。
私の考えは、固定要素をfixedlistと呼ばれる新しいリストに書き出すことです。これにより、複数のソリューションのセルが[]に変更されます。
上記の例では、固定リストは次のようになります:[[1]、[3]、[2]、[4]、[4]、[2]、[3]、[1]、[]、[4] 、[1]、[]、[]、[1]、[4]、[]]
ここから「サンプル」があり、ソリューションリストで1に等しくない最小の長さを探し、このセルの最初の可能な数を試し、それをその固定リストに入れます。ここに、セルを更新して、それがまだ解決可能な数独であるかどうかをチェックするアルゴリズムがあります。そうでなければ、私は1つを後退させて新しいものを試す方法がわかりません。私はそれの擬似コードを知っており、命令型言語には使用できますが、erlangには使用できません。(prologは実際にバックトラックアルゴリズムを実装しましたが、erlangは実装しませんでした)
何か案が?