Для произвольного списка булевых элементов, что является самым элегантным способом определения того, что именно одно из них верно?
Наиболее очевидным взломом является преобразование типов: преобразование их в 0
для false
и 1
для true
, а затем их суммирование и возврат sum == 1
.
Я хотел бы знать, есть ли способ сделать это, не преобразовывая их в ints, на самом деле использует логическую логику.
(Кажется, это должно быть тривиально, idk, длинная неделя)
Изменить: Если это не было очевидно, это скорее кодекс-гольф/теоретический вопрос. Я не суетился об использовании преобразования типа /int в коде PROD, мне просто интересно, есть ли способ сделать это без этого.
Edit2: Простите, что это долгая неделя, и я не очень хорошо объясняю себя. Позвольте мне попробовать:
В логической логике ANDing набор логических значений является истинным, если все логические значения истинны, ORing коллекция истинно, если хотя бы одно из них истинно. Есть ли логическая конструкция, которая будет истинна, если верно только одно логическое значение? XOR это для коллекции из двух булевых, например, но не более того, и она падает.