pdpi wrote:
> On Jul 15, 12:08 am, Christian Heimes <li...@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

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to