4 个输入中只有 1 个为真(布尔逻辑表达式)

Only 1 true of 4 inputs (Boolean Logic Expression)

写一个表达式,其中有 4 个输入,并且仅当一个且只有一个输入为真时才输出真。

到目前为止,我一直在考虑使用异或门 ((x0 XOR x1) XOR (x2 XOR x3)) 但我需要解决我们有 3 个 true 的情况,例如 x0=false x1=true x2=true x3=true,将输出 True XOR False 最后整个表达真实。我想让表达式尽可能基本(即使用尽可能少的运算符)。我也尝试添加 ((x0 XOR x1)Y(x2 XOR x3)) ∧ ¬((x0∧x1)∨(x2∧x3)) 我不确定这是最好的方法。

我希望 (x0=false x1=true x2=true x3=true) 的输出为 False 但对于我的第一个表达式它将为 true, 并且像 (x0=false x1=true x2=false x3=false) 这样的东西是真的,我的第一个表达式对

是正确的

看看 php 中的这个演示(您可以将它与您想要的任何编程语言一起使用)。 假设您有 4 个布尔变量,如 X1X2X3X4。您必须检查所有 (No of Boolean Exp)+1 表达式组合。这里有 4 个,所以会有 5 个组合。 所以会有布尔值的组合表达式。最后一个组合用于检查至少一个应该为真。

$x1 = true;
$x2 = false;
$x3 = false;
$x4 = true;

if(($x1 && !$x2 && !$x3 && !$x4) || (!$x1 && $x2 && !$x3 && !$x4) || (!$x1 `&& !$x2 && $x3 && !$x4) || (!$x1 && !$x2 && !$x3 && $x4) && ($x1 && $x2 && $x3 && $x4)){
    echo 'only one variable is true';
}else{
    echo 'more then one var is true';
}`

此表达式为您提供预期的输出(只有一个输入为真时输出为真。)。请测试一下..

(!x0 AND !x1 AND (x2 XOR x3)) 或 (!x2 AND !x3 AND (x0 XOR x1))