我有这个:
if(!A or (A and B)) //pseudocode我想否定如果-声明:
这应该是可行的:
if(!(!A or (A and B))) //pseudocode但我相信有一种方法可以简化它,现在它正在逃离我。
发布于 2015-12-01 06:07:38
欢迎来到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) 发布于 2015-12-01 06:11:43
如果你把它分解成真相表..。
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 and !B之外,您可以看到结果在所有情况下都是正确的,而不必知道/记住任何布尔代数规则。“除了”只是“不是”所以..。!(A and !B)...
然而,如果编写!A or (A and B)更好地适应现实世界的问题,那么就让代码保持这样吧,除非它的性能非常关键.
https://stackoverflow.com/questions/34013590
复制相似问题