0

如果已经有任何开源代码可以做到这一点,我有兴趣了解它。但我还没有看到它,所以我正在尝试自己动手。

例子:

variable x = compareCriteriaBetween 3 and 6
variable y = compareCriteriaLesserThanOrEqual 5

对我来说困难的部分是找到一种优雅的方式来比较 compareCriteria 并创建一个交集。在示例中,两者之间的交集是“介于 3 和 5 之间”。

我怎样才能以“告诉不问”的方式实现这一点?请注意,compareCriteria 可以完全不相关(例如,startsWithLetter 与 betweenNumber)。

4

2 回答 2

1

如果您只对简单的标准感兴趣,例如整数/浮点数的小于等于介于之间,您可以将3 和 6 之间重写为(大于等于 3 小于等于 6)。如果将其与逻辑小于等于 5相结合,则可以使用布尔代数来获得(大于等于 3 小于等于 6 小于等于 5)),然后将内括号简化为小于等于 5并将结果重写为介于3 和 5

于 2009-08-31T12:37:13.093 回答
1

如果您的表达式中只有常量,那么您应该避免不可判定性(我认为!)。一旦你可以用 +-*/ 来表达例如关于整数的一般性陈述,就会出现问题(参见Peano 算术)。

即使您停留在可判定性范围内,也不存在可以采用任意语句 P(x) 和 Q(x) 并为所有 x 计算等效于 P(x) 和 Q(x) 的语句 R(x) 的算法,其中 x 可以跨越任何域(整数、字符串、矩阵、实数、复数、逻辑语句 [哎呀,回到不可判定的领域!],...)。您需要特定领域的技巧才能到达那里,并且需要严格分隔的语言来制定 P、Q 和 R。某些领域存在软件产品——其中之一称为 Mathematica ...

尝试回归基础:您要解决什么问题?

于 2009-09-01T11:22:23.893 回答