如果有任何开源代码可以做到这一点,我有兴趣听到它。但是我还没有看到它,所以我试图自己动手。
示例:
variable x = compareCriteriaBetween 3 and 6
variable y = compareCriteriaLesserThanOrEqual 5
对我来说,困难的部分是找到一种优雅的方法来比较compareCriteria并创建一个交集。在示例中,两者之间的交点是“3到5之间”。
我如何以“告诉不要问”的方式实现这一点?请注意,compareCriteria可以完全不相关(例如startsWithLetter与betweenNumber)。
答案 0 :(得分:1)
如果您只对简单标准感兴趣,例如不等于或在整数/浮点数之间,则可以将重写为3到6 之间(大于等于3 和 等于6 )。如果将此与逻辑和与不等于5 结合使用,则可以使用布尔代数获取(更大等于3 和(不等于6 和 等于5 ))在将内括号简化为不等于5 之前并将结果重写为 3到5之间。
答案 1 :(得分:1)
如果你的表达式中只有常量,那么undecidability就应该是安全的(我想!)。一旦您表达问题就会出现问题,例如有关带有+ - * /的整数的一般陈述(见Peano arithmetic)。
即使你处于可判定性的范围内,也不存在可以采用任意语句P(x)和Q(x)并且计算等于P(x)&的语句R(x)的算法。 Q(x)表示所有x,其中x可以超出任何域(整数,字符串,矩阵,实数,复数,逻辑语句[呐喊,回到不可判定的区域!],... )。您需要特定于域的技巧才能到达那里,并严格定界languages,其中包含P,Q和R.存在某些域的软件产品 - 其中一个称为Mathematica ......
尝试回归基础:你想解决什么问题?