写一个表达式,其中有4个输入,并且只有一个输入为true时才输出true。
到目前为止,我还考虑过使用XOR门 ((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)之类的东西,我的第一个表达式可以正确工作
答案 0 :(得分:2)
使用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';
}`
答案 1 :(得分:2)
此表达式为您提供期望的输出(当一个且只有一个输入为true时输出true。)。请测试一下。
(!x0 AND!x1 AND(x2 XOR x3))或(!x2 AND!x3 AND(x0 XOR x1))