我正在为WQL查询创建一个表达式,以便将软件部署定位到既没有Version1也没有Version2的机器上。
我想出了两个表达式,它们似乎都有相同的结果,并且想要运行这个逻辑来对抗您,看看这些表达式是否真的是等价的?如果是这样的话,我可能会选择表达式1。
表达式1:
如果机器在“Software.version1”中,而机器不是Software.version1,机器不是Software.version2,则将Software.version1部署到机器
表达式2:
如果机器在"Group1“中,并且(机器不是Software.version1或机器不是Software.version2 ),则将Software.version1部署到机器上
我的大脑开始受伤了。
非常感谢
发布于 2012-03-02 14:03:39
在表达式1中,所有三个条件都必须为true (机器在第1组,而不是版本1,而不是版本2)。在表达式2中,两个条件必须为真:要么机器在组1而不是版本1,要么机器是组1而不是版本2。
假设机器不能同时拥有版本1和版本2,如果机器位于第1组,则第二个表达式将始终为真。第一个表达式只有在机器处于第1组且既没有版本1也没有版本2时才是真表达式。
从逻辑上讲,您有:
exp1 = g1 ∧ ~v1 ∧ ~v2
exp2 = g1 ∧ (~v1 ∨ ~v2)
= g1 ∧ ~(v1 ∧ v2) // by DeMorgan's theorem所以答案是no,这两个表达式不是等价的。如果你不明白为什么,就为这三个条件和这两个表达式写出真值表。
发布于 2012-03-02 14:23:21
我不太熟悉语言,但逻辑似乎很直接。
如果我正确理解了这个问题,你想:
这将通过表达式1来实现。
表达式2将返回:
F 219
我强烈建议你用任何语言来测试(我肯定有某种打印的bool功能),而且因为它没有什么可测试的,所以,真的,只需要测试所有的三个或四个可能性,看看它是否返回您想要的。
https://stackoverflow.com/questions/9534472
复制相似问题