Florent Guillaume wrote:
On 27 Jul 2006, at 16:15, Lennart Regebro wrote:

Modified: Products.Five/trunk/site/localsite.py
===================================================================
--- Products.Five/trunk/site/localsite.py 2006-07-27 13:51:25 UTC (rev 69270) +++ Products.Five/trunk/site/localsite.py 2006-07-27 14:15:46 UTC (rev 69271)
@@ -16,12 +16,26 @@
$Id$
"""

+from operator import xor
+def one_of_three(a, b, c):
+    # Logical table for a three part test where only one can be true:
+    # 0 0 0: 0
+    # 0 0 1: 1
+    # 0 1 0: 1
+    # 0 1 1: 0
+    # 1 0 0: 1
+    # 1 0 1: 0
+    # 1 1 0: 0
+    # 1 1 1: 0
+    return xor(xor(a, b), c) and not (a and b and c)


Heh, boolean algebra is nice but sometimes integers convey the meaning much better:
   return int(a)+int(b)+int(c) == 1

Hey, this is fun!  How about this:

def only_one(*args):
    return sum(bool(i) for i in args) == 1
--
Benji York
Senior Software Engineer
Zope Corporation
_______________________________________________
Zope-Checkins maillist  -  Zope-Checkins@zope.org
http://mail.zope.org/mailman/listinfo/zope-checkins

Reply via email to