考虑两个布尔变量A和B,以及这些变量的一些逻辑运算,产生C:
C = A [OP] B
其中' OP'可以是'&#;;' |',' ^','〜'等等的任意组合。
确定A和B的值。
是否可以使用逻辑运算创建一系列测试,以便根据每次测试的C值明确确定A和B的真/假值?
由于应用程序是使用NumPy开发的,所以我最感兴趣的是此软件包中原生的运算符。
答案 0 :(得分:5)
否,如果您只是给出C的值和使用的操作,则肯定确定确定A和B.
需要一个反例来反驳它:
C= True
OP= |
A和B有三种可能的有效状态:A=True, B=True
,A=True, B=False
,A=False, B=True
对于多个(用户选择的)测试,如果您将自己限制为&
,|
和^
(xor),我们会得到相同的结果。在一般情况下显然是不可能的 - 因为操作是可交换的,所以你不能分开A和B.
例如,如果
A & B == False
A | B == True
A ^ B == True
A=True, B=False
和A=False, B=True
都满足条件。
如果我们不对您可以测试的表达式应用 ,那么获取B
(例如)的值非常简单:只评估C=(A|~A)|B
结果将等于B
但是,如果你没有任何限制,你可以说C=B
并直接测试它!