编写一个表达式,其中您有4个输入,并且仅当一个输入为真时才输出为真。
到目前为止,我已经想过使用异或门((x0 XOR x1) XOR (x2 XOR x3)),但我需要解决的情况是,我们有3个True,例如x0=false x1=true x2=true x3=true,将输出true XOR False,最后输出整个表达式True。我想让表达式尽可能的基本(即使用尽可能少的运算符)。我也试过添加((x0异或x1)Y(x2异或x3))∧,((x0∧x1)∨(x2∧x3))我不确定这是不是最好的方法。
我希望(x0=false x1=true x2=true x3=true)的输出为假,但对于我的第一个表达式,它将为真,并且类似于(x0=false x1=true x2=false x3=false)的输出将为真,我的第一个表达式对此正确工作
发布于 2019-01-22 15:37:37
这个表达式给出了您的预期输出(当一个输入且只有一个输入为真时,输出为真。)请测试一下..
(!x0 AND !x1 AND (x2异或x3)) OR (!x2 AND !x3 AND (x0异或x1))
发布于 2019-01-22 14:45:35
看看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';
}`https://stackoverflow.com/questions/54301769
复制相似问题