给定一个任意的布尔值列表,最优雅的方法是什么,以确定其中恰好有一个为true?
最明显的方法是类型转换:将它们转换为false
为0
和true
为1
,然后将它们相加,并返回sum==1
。
我想知道是否有一种方法可以在不将它们转换为整数的情况下,实际使用布尔逻辑来完成这个任务。
(这似乎应该是微不足道的,我不知道,这是漫长的一周)
编辑:如果这不是很明显,这更像一个代码高尔夫或理论问题。我并不关心在PROD代码中使用类型转换/整数加法,我只是想知道是否有一种方法可以在不进行这样的操作的情况下完成。
编辑2:抱歉朋友们,这是一个漫长的一周,我表达得不好。让我试试这个:
在布尔逻辑中,ANDing一组布尔值是真的,如果所有布尔值都为真,则ORing集合是真的,如果至少有一个为真,则XOR是这个集合中恰好一个布尔值为真的逻辑构造。如果有两个布尔值的集合,但超过两个就不行了。