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 个布尔变量,如 X1
、X2
、X3
和 X4
。您必须检查所有 (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))
写一个表达式,其中有 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 个布尔变量,如 X1
、X2
、X3
和 X4
。您必须检查所有 (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))