我有一个有趣的小问题,我遇到了这样的逻辑子句:
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 可以使用某些库来解决它,但我的尝试证明是徒劳的。我知道我可以蛮力排列范围内的所有数字,然后手动检查它们是否符合规则。但这似乎很蹩脚。