我有一个有趣的小问题,我需要处理类似以下的逻辑子句:
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个(或者一万个)规则,并且它们重叠了,该怎么办呢?假设有一个有效的单一答案,并且你以某种方式可以访问这些规则(比如说一个谓词列表)。
是否有一个好的、通用的、直观的解决方案呢?我知道Prolog可以用某些库来解决这个问题,但我的尝试都失败了。我知道我可以暴力地对范围内的所有数字进行排列组合,然后手动检查它们是否符合规则。但那似乎相当糟糕。