我有这个:
<clients>
<client host="client-master" use_controller_vm="true" maxusers="10000"/>
<client host="client-slave-11" port="8123" weight="3" maxusers="40000" cpu="1">
<ip value="10.0.0.101"></ip>
</client>
<client host="client-slave-2" port="8123" weight="3" maxusers="40000" cpu="1">
<ip value="10.0.0.102"></ip>
</client>
</clients>
我想否定 if-statement:
这应该有效:
if(!A or (A and B)) //pseudocode
但我相信有一种方法可以简化它,而且它现在正在逃避我。
答案 0 :(得分:6)
欢迎来到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)
答案 1 :(得分:4)
如果你把它分解成真值表......
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
之外,您可以看到结果为真,而不必知道/记住任何布尔代数规则。 &#34;除了&#34;只是&#34;不是&#34;所以... !(A and !B)
...
然而,如果写!A or (A and B)
更好地符合现实世界中的问题,那么您尝试编码会让它保持原样,除非它对性能至关重要......