If statement 简化逻辑语句

If statement 简化逻辑语句,if-statement,boolean-operations,If Statement,Boolean Operations,我有这个: if(!A or (A and B)) //pseudocode 我想否定if语句: 这应该起作用: if(!(!A or (A and B))) //pseudocode 但我相信有一种方法可以简化它,我现在对此感到困惑。欢迎来到de Morgan的世界,学习布尔代数和简单分布: if(!(!A or (A and B)) => if(!(!A) and !(A and B)) => if(A and (!A or !B)) => if((A and

我有这个:

if(!A or (A and B))   //pseudocode
我想否定if语句:

这应该起作用:

if(!(!A or (A and B)))  //pseudocode

但我相信有一种方法可以简化它,我现在对此感到困惑。

欢迎来到de Morgan的世界,学习布尔代数和简单分布:

if(!(!A or (A and B)) 
=> if(!(!A) and !(A and B))
=> if(A and (!A or !B))
=> if((A and !A) or (A and !B))
=> if(A and !B) 

如果你把它分解成真值表

A B  !A  (A and B)  A! or (A and B)
0 0  1   0          1
0 1  1   0          1
1 0  0   0          0
1 1  0   1          1
您可以看到结果在所有情况下都是正确的,除了
A和!B
无需知道/记住任何布尔代数规则。“除了”只是“不是”所以<代码>!(A和!B)


但是如果写
!A或(A和B)
更符合您试图编写代码的实际问题,除非它对性能至关重要

@suraj这是错误的,因为这简化为如果(A)感谢这似乎与wolfram alpha的输出形成凝胶