【发布时间】:2019-12-25 04:05:24
【问题描述】:
我有以下逻辑需要简化以看起来更清晰和简洁:
if (x1 < y1)
return 1;
else if (x1 == y1)) {
if (x2 < y2)
return 1;
else if (x2 == y2) {
if (x3 < y3)
return 1;
} else
return 0;
}
} else
return 0;
为了解决上述问题,我应用了逻辑表达式来进一步简化这几行条件:
if (x1 < y1 || (x1 == y1 && x2 < y2) || (x1 == y1 && x2 == y2 && x3 < y3))
return 1;
else
return 0;
我不确定如何从这里进一步简化。谁能帮帮我?
更新: For further simplifying, I tried applying boolean algebra to this expression,但没有运气!我想出了这个:
A + (A1 * B) + (A1 * B1 * C)
其中A 表示x1 < y1,A1 表示x1 == y2
【问题讨论】:
-
您是想简化它以使其更清晰、更简洁,还是处于需要大量优化的紧密循环中?如果是第二个并且您的值范围有限,您可以通过一些转变和一次比较来做到这一点。但必须有非常具体的理由才能使之成为正确的方法。
-
我相信问题属于这里:codereview.stackexchange.com
-
x1 < y1 || (x1 == y1 && (x2 < y2 || (x2 == y2 && x3 < y3))) -
我正在尝试简化它以使其更清晰、更简洁。在这种情况下,性能并不重要,可读性才是。如果位移使它看起来可读 - 就这样吧。
标签: conditional-statements logical-operators boolean-algebra