特定のグリッド サイズ (4x4 が適切なサイズ) のすべてのユニークなクロスワード パズル グリッドを生成したいと考えています。一意でないパズルを含むすべての可能なパズルは、グリッド領域の長さ (4x4 の場合は 16) のバイナリ文字列で表されるため、可能なすべての 4x4 パズルは範囲 0 のすべての数値のバイナリ形式で表されます。 2^16 に。
これらを生成するのは簡単ですが、無効で重複したケースをプログラムで排除する方法について誰かが良い解決策を持っているかどうか知りたいです. たとえば、1 つの列または 1 つの行のすべてのパズルは機能的に同一であるため、これら 8 つのケースのうち 7 つが除外されます。また、クロスワード パズルの規則に従って、すべての正方形が連続している必要があります。重複した構造をすべて削除することに成功しましたが、私のソリューションの実行には数分かかり、おそらく理想的ではありませんでした。隣接性を検出する方法に途方に暮れているので、誰かがこれについてアイデアを持っているなら、それは大歓迎です。
私はPythonでのソリューションを好みますが、好きな言語で書いてください。必要に応じて、すべてのグリッドを生成し、重複を削除するための Python コードを投稿できますが、遅いかもしれません。