如果有任何开放源码已经做到了这一点,我很有兴趣听到它。但我还没有看过,所以我正在试着推出我自己的。
示例:
variable x = compareCriteriaBetween 3 and 6
variable y = compareCriteriaLesserThanOrEqual 5对我来说,困难的部分是找到一种优雅的方法来比较compareCriteria并创建一个交叉点。在本例中,两者之间的交集是‘介于3和5之间’。
我怎样才能以一种“告诉不要问”的方式来实现它呢?请注意,compareCriteria可以是完全无关的(例如startsWithLetter和betweenNumber)。
发布于 2009-09-01 11:22:24
如果你的表达式中只有常量,你应该是安全的(我认为!) undecidability。一旦你能用+-*/来表达关于整数的一般语句,问题就出现了(参见Peano arithmetic)。
即使您停留在可判断性的范围内,也没有算法可以接受任意语句P( x )和Q(x),并为所有x计算一个等价于P(x) & Q(x)的语句R(x),其中x可以在任意域(整数、字符串、矩阵、实数、复数、逻辑语句!,...)上取值。要做到这一点,你需要领域特定的技巧,以及严格限定的languages,其中P,Q和R都是公式化的。存在针对某些领域的软件产品--其中一个被称为Mathematica...
试着回到最基本的问题:你想解决什么问题?
发布于 2009-08-31 12:37:13
如果你只对简单的条件感兴趣,比如整数/浮点数上的小于等于或介于之间,你可以重写3到6为(大于等于3和小于等于6)。如果将其与小于等于5的逻辑和结合使用,则可以使用布尔代数来获得(大于等于3的和(小于等于6的和小于等于5的)),然后将内括号简化为小于等于5,并将结果重写为介于3和5之间。
https://stackoverflow.com/questions/1357097
复制相似问题