使用卡诺图简化你的逻辑判断

卡诺图是真值表的变形,它可以将有n个变量的逻辑函数的2^n个最小项组织在给定的长方形表格中,同时为相邻最小项(相邻与项)运用邻接律化简提供了直观的图形工具。在部分情况下,卡诺图能让你的逻辑变得一目了然,但是如果需要处理的逻辑函数的自变量较多,卡诺图会使图形更加复杂。

一个简单的例子

现有绿、黄、红三颗灯,当满足下面四个条件中任何一个时,需要按下按钮:

绿灯、黄灯、红灯全部都熄灭

黄灯熄灭、红灯亮

绿灯熄灭、黄灯亮

绿灯、黄灯、红灯全部亮起

如果让你写一段代码来判断是需要按下按钮,很多人会这么写:

/** * @parambool $a 绿灯的状态,true为亮,false为熄灭 * @parambool $a 黄灯的状态,true为亮,false为熄灭 * @parambool $a 红灯的状态,true为亮,false为熄灭 * @return bool */ function checkEnterBtn(bool $a, bool $b, bool $c): bool { if ( (!$a && !$b && !$c) || (!$b && $c) || (!$a && $b) || ($a && $b && $c) ) { return true; } return; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyfxg.html