missing 'xor' Boolean operator
Christian Heimes
lists at cheimes.de
Wed Jul 15 07:37:22 EDT 2009
pdpi wrote:
> On Jul 15, 12:08 am, Christian Heimes <li... at cheimes.de> wrote:
>> Chris Rebert wrote:
>>> Using the xor bitwise operator is also an option:
>>> bool(x) ^ bool(y)
>> I prefer something like:
>>
>> bool(a) + bool(b) == 1
>>
>> It works even for multiple tests (super xor):
>>
>> if bool(a) + bool(b) + bool(c) + bool(d) != 1:
>> raise ValueError("Exactly one of a, b, c and d must be true")
>>
>> Christian
>
> "if bool(a) + bool(b) + bool(c) + bool(d) != 1:" is not equivalent to
> xor. 1 xor 1 xor 1 = 1 xor (1 xor 1) = 1 xor 0 = 1 (or = (1 xor 1) xor
> 1 = 0 xor 1 = 1 if you assicate to the left)
I'm well aware of the fact that I've described something differently.
'xor' can be explained as 'check if exactly one element of two elements
is true'. My algorithms describes a super xor, aka 'check if exactly one
element of n elements is true'.
Christian
More information about the Python-list
mailing list