给定一个任意的布尔值列表,确定其中一个为真的最优雅的方法是什么?
最明显的技巧是类型转换:将它们转换为0
forfalse
和1
for true
,然后将它们相加,然后返回sum == 1
.
我想知道是否有一种方法可以在不将它们转换为整数的情况下执行此操作,实际上是使用 boolean logic。
(这似乎应该是微不足道的,idk,漫长的一周)
编辑:如果不是很明显,这更像是一个代码高尔夫/理论问题。我对在 PROD 代码中使用类型转换/int 加法并不大惊小怪,我只是感兴趣是否有办法做到这一点。
Edit2:对不起,这是一个漫长的一周,我没有很好地解释自己。让我试试这个:
在布尔逻辑中,如果所有布尔值都为真,则对一组布尔值进行与运算为真,如果其中至少一个为真,则对集合进行或运算为真。如果恰好一个布尔值为真,是否有一个逻辑结构为真?例如,XOR 是用于两个布尔值的集合,但除此之外,它就会失败。