次のような論理句が提示される楽しい小さな問題があります。
Rule 1. A, B and C are unique, and are numbers from 1 to 3 (so every number is used).
Rule 2. B < 2
Rule 3. C > 2
今(私が思いついたこの簡単な例が実際に検証されると仮定すると:P)、それは簡単に見ることができます
A = 2
B = 1
C = 3
しかし、これは非常に不自然な例です。
20 個 (または 1 万個) のルールがあり、それらが重複しているとしたらどうでしょう。有効な単一の回答があり、何らかの方法でルールにアクセスできると仮定します (述語のリストなど)。
素晴らしく、一般的で、直感的な解決策はありますか? Prolog が特定のライブラリで解決できることは知っていますが、私の試みは無駄でした。範囲内のすべての数値を力ずくで並べ替えてから、ルールに準拠していることを手動で確認できることはわかっています。しかし、それはかなり不自由なようです。