提问者:小点点

if语句中的优化/减少条件表达式


其目标是通过寻找变量之间的值依赖关系来优化大型条件表达式,从而减少逻辑OR语句。

假设我们有以下条件:

if((A == 0 && B == 0) ||  (A == 0 && B == 1) || (A == 0 && B == 2) ...

一定的次数。。。 有没有一种方法可以通过自动具有以下条件来减少这种例子:

if(A == 0 && (B >= 0 && B <= 2))

第一个条件所涉及的数字仅在该条件之前已知,无法手动键入。 条件中还可能涉及数百个逻辑“或”运算符。 值之间可能存在差距(可能需要使用%运算符),但总有一个模式。

任何一个库或现有的算法可以找到变量之间的依赖关系?

再举一个例子:

if((A == 0 && B == 0) ||  (A == 0 && B == 2) || (A == 0 && B == 4)

可翻译为:

if((A == 0 && B%2 == 0)

还有一个:

if((A == 0 && B == 0 && C == 0) ||  (A == 0 && B == 2 && C == 0) || (A == 0 && B == 4 && C == 0) || (A == 0 && B == 0 && C == 1) ||  (A == 0 && B == 2 && C == 1) || (A == 0 && B == 4 && C == 1))

将转变为:

if(A==0 && B%2==0 && C>=0 && C<=1)

对于所涉及的变量,我有每个术语的所有值。

我有类似[[0,0,0],[0,2,0],[0,4,0],[0,0,1],[0,2,1],[0,4,1](例如上一个示例)

谢谢你的时间和答案!


共1个答案

匿名用户

if((A == 0 && B == 0) ||  (A == 0 && B == 2) || (A == 0 && B == 4)

无法转换为

if((A == 0 && B%2 == 0)

Cuz

B == 6

和等等