Prolog CLP FD を介して制限プログラミングを使用して、提案されたパズルを解こうとしています。このパズルは、次の簡単なルールで構成されています。
さて、私のコードでは、すでに 2x2 グリッドの制限をカバーしており、1 つのピースを少なくとも同じ色の 1 つに接続する必要があります。
問題は、反対の色のピースを通過せずに、1 つのピースが同じ色の他のすべてのピースへのパスを持っている (接続されている) 必要があるという制限を構築する方法を見つけることができないことです。この種の出力:
0 0 0 0
0 1 0 1
0 1 0 1
0 1 0 0
0 0 0 0
0 1 0 1
0 1 0 1
0 1 0 1
1 がすべて互いに接続されているわけではありません。
この種のグラフ制限を CLP FD に記述するにはどうすればよいですか?
編集: SICStus Prolog を使用しています。