用于编码布尔函数的Python方法

时间:2015-05-21 22:53:53

标签: python boolean-logic

我知道给定n个输入,有2 ^(2 ^ n)个可能的布尔函数。在Python中是否有某种方法可以对这些函数进行编码,因此,当给出0到65,535之间的数字和4个布尔值时,我可以得到相应的布尔值?

1 个答案:

答案 0 :(得分:2)

使用N的位作为真值表,然后使用输入在其中选择一个位:

def boolFunc(N, *args):
    bit = 0
    for value in args:
        bit = 2 * bit + int(value)
    return N & (1 << bit) != 0

例如,对于4位输入,27030是奇偶校验功能:

>>> boolFunc( 27030, False, False, False, False )
False
>>> boolFunc( 27030, False, True, False, False )
True
>>> boolFunc( 27030, False, True, False, True )
False
>>> boolFunc( 27030, True, True, True, False )
True

对于5位,奇偶校验功能为2523490710:

>>> boolFunc( 2523490710, True, False, True, False, True )
True