すべての数字には 9 つの位置があるという観点で数独を解こうとしています。これは私の数独の表現です:
表から、番号5の数独の位置 (Row,Col) は (2,8)、(4,2)、(6,5) であることがわかります。
たとえば、上の行 は行1です。
私がやったことは次のとおりです。
- すべての行について、その行のすべての ROW-Value が
alldifferent
fromを使用して異なるかどうかを確認しic_global
ます。 - 上記と同じことを行いますが、次に COLUMN-Values に対して行います。
- 行ごとに、平方数が異なるかどうかを確認します (毎回行と列の値を使用して計算されます)
alldifferent
。もう一度使用します。
上記のことは正常に機能し、数独の解決策は得られますが、正しい解決策ではありません。これは、もう 1 つ確認する必要があるためです。すべての位置が異なる必要があります。私のソルバーの現在の状態では、同じ位置に複数の数字がある解を得ることができました。fe: 2と3は両方とも位置(5,7)にある可能性があります。これは、すべての位置が異なるかどうかを確認していないためです。
この問題にどのように対処しますか?タプル形式の 1 つのリスト内のすべての位置を取得してから、すべてのタプルが異なるかどうかを確認しようとしましたが、何時間も苦労しており、本当に必死になっています。ここで解決策を見つけられることを願っています。
編集:コードを追加