首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >4个输入中只有1个为真(布尔逻辑表达式)

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

Stack Overflow用户
提问于 2019-01-22 13:27:15
回答 2查看 1.6K关注 0票数 2

编写一个表达式,其中您有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)的输出将为真,我的第一个表达式对此正确工作

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-22 15:37:37

这个表达式给出了您的预期输出(当一个输入且只有一个输入为真时,输出为真。)请测试一下..

(!x0 AND !x1 AND (x2异或x3)) OR (!x2 AND !x3 AND (x0异或x1))

票数 2
EN

Stack Overflow用户

发布于 2019-01-22 14:45:35

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

代码语言:javascript
复制
$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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54301769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档