Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logic 逻辑:A&;!(B | C)|(B | C)与(A | B | C)相同吗?_Logic - Fatal编程技术网

Logic 逻辑:A&;!(B | C)|(B | C)与(A | B | C)相同吗?

Logic 逻辑:A&;!(B | C)|(B | C)与(A | B | C)相同吗?,logic,Logic,我遇到了一些obj-c代码,我想知道是否有办法简化它: #if ( A && !(B || C)) || ( B || C ) 这和我的一样吗 #if ( A || B || C ) 如果没有,是否有其他更易于阅读的方法来表述 [编辑] 在提问之前,我试过了真值表,但我认为我必须漏掉一些东西,因为我怀疑基金会。框架/基金会。有什么好的理由吗 这是原始代码(来自基金会.H): 获取笔+纸+尝试,只有8种可能的输入是的,它是相同的。使用De Morgan规则: (A&!(B |

我遇到了一些obj-c代码,我想知道是否有办法简化它:

#if ( A && !(B || C)) || ( B || C )
这和我的一样吗

#if ( A || B || C )
如果没有,是否有其他更易于阅读的方法来表述

[编辑] 在提问之前,我试过了真值表,但我认为我必须漏掉一些东西,因为我怀疑基金会。框架/基金会。有什么好的理由吗

这是原始代码(来自基金会.H):


获取笔+纸+尝试,只有8种可能的输入

是的,它是相同的。使用De Morgan规则:

(A&!(B | | C))| |(B | C)=(A&!B&!C)| |(B | C)。
所以当A=1,B,C=0时,第二个是真的。如果不是这样的话,当B | | C时,第二部分(B | | C)将为真。因此它等于第一部分。

是的,这两个表达式是等价的。(我刚刚编写了几个函数来测试所有八种可能性。)


根据最后两栏,我会说是。

是。正如其他人所说,你可以用真理表来衡量它。德摩根规则也有帮助

然而,我认为最好的选择是使用。学习需要几分钟,但卡诺映射允许您始终找到布尔逻辑的最简单表达式。真值表可以验证最小化,但不能给你

我是这样得到的:

首先,表格布局:

         AB
     00   01   11   10
  0|    |    |    |    |
C 1|    |    |    |    |
现在,考虑你的方程,B | | C总是会导致一个真理:

         AB
     00   01   11   10
  0|    |  T |  T |    |
C 1|  T |  T |  T |  T |
这只剩下两种情况。在这两种情况下,右侧的计算结果都为false。对于000,左侧也计算为false(0&&!(无论什么)为false)。100,1&!(0 | | | 0)的计算结果为true。因此,这种说法是正确的。填写:

         AB
     00   01   11   10
  0|  F |  T |  T |  T |
C 1|  T |  T |  T |  T |

现在,我们只需要“覆盖”所有真相。“C”将覆盖最下面一行。“B”将覆盖中间的正方形(四个值)。因此,“B | | C”覆盖了除右上角正方形以外的所有区域。现在,“A”将覆盖右边的四个空间正方形。这是多余的,没关系。因此,“A | | B | | C”覆盖了所有的真正方形,省略了唯一的假正方形。

它们是一样的。您可以使用来测试它。当
A
B
C
false
时,这两个表达式仅在一种情况下给出
false
,您也可以说:

(A&&!(B|C)| |(B|C)重写为(A&&!W)| | W(1)

(1) 重写为(A&&!W)|(A | |!A | | W)(2)

(2) 重写(A&&!W)| | | | | | | | | | | | | | | | | | | | | | 124

(3) 重写(A&&!W)| |!(A&&!W)| | | | | W)(4)


(4) 导致A | | W,然后A | | B | | C

为什么不实施一个包含结果的小真值表并自己测试它呢?只有8种不同的输入| A=true,B=true,C=true | A=true,B=true。C=假|等等。比较真值表。如果输出是相同的,那么你的逻辑是等价的。你在问题标题中的括号与问题本身略有不同。如果标题是正确的,那么“!(B | | C)|(B | | C)”部分可以替换为“true”,留下“A&&true”,这只相当于A。另一方面,问题版本似乎缺少一对括号,否则会出现语法错误。除此之外,我同意其他海报,创建真相表。@Peter Perháč-感谢编辑@detunized,是的,我用了最后两个,而不是| | | | ed。它们是一样的,很自然,我先试过了。我认为代码的来源高于这个看似晦涩的公式:OSX的基础。因此我怀疑我的涂鸦。但是,是的,+1代表你卓越的第一直觉。我是一名实验物理学家——如果让我选择做数学或做测量,我也会选择愚蠢的解决方案,但哪一个是愚蠢的,哪一个不是取决于实验@约翰-聪明的选择是先用最愚蠢的方法做!这是一个聪明的链接。我会和我的数学老师朋友们分享+1这是一个比这个问题值得回答的更好的答案,具有教育意义。你也可以说
a^(B|C)
no?
         AB
     00   01   11   10
  0|    |  T |  T |    |
C 1|  T |  T |  T |  T |
         AB
     00   01   11   10
  0|  F |  T |  T |  T |
C 1|  T |  T |  T |  T |