微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

简化三路比较 a < b < c || b < c < a || c < a < b;

如何解决简化三路比较 a < b < c || b < c < a || c < a < b;

有没有更短的方法来计算这个布尔表达式?

a < b < c || b < c < a || c < a < b

在 JavaScript 中,这将是:

a < b && b < c || b < c && c < a || c < a && a < b

是否有一些有用的数学或布尔代数技巧可以让这变得不那么麻烦?

abc 都是数字。在我的特定用例中,它们保证是不同的。

(对于额外的上下文,它出现在回答this question的过程中)

解决方法

您有 3 个不同的布尔比较,您希望其中 2 个保持不变。 (严格来说,2 个或更多,但在您的情况下,您永远不可能拥有全部 3 个)。所以你可以写

a < b && b < c || b < c && c < a || c < a && a < b

作为

(a < b) + (b < c) + (c < a) == 2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。