问题标签 [demorgans-law]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
demorgans-law - 我什么时候应该在编程中应用德摩根定律?
我认为任何学习过编程课程的程序员都必须记住德摩根定律。
如果你不知道它是什么,这里是要点
!(A && B) = !A || !B
!(A || B) = !A && !B
我假设如果我必须记住它,我会发现它适用于编程情况。但我根本不需要使用它。
有什么理由我应该在编程中使用它吗?它是使程序更快,还是使条件更易于阅读?
haskell - 德摩根在 Haskell 中的定律通过 Curry-Howard 通信
我在 Haskell 中实施了四个德摩根定律中的三个:
但是,我认为不可能实施最后一条法律(有两个居民):
在我看来,有两种可能的解决方案:
undefined
代替?
. _ 这不是一个好的解决方案,因为它是作弊。使用单态类型或有界多态类型来编码默认值。
这不是一个好的解决方案,因为它比德摩根定律更弱。
我们知道德摩根定律是正确的,但我假设最后一条定律不能用 Haskell 编码是否正确?这对 Curry-Howard 同构有什么看法?如果每个证明都不能转换成等效的计算机程序,那它就不是真正的同构,对吧?
ruby - Ruby if 语句多个条件不相等
我不明白为什么不等于的多个 if 语句条件不起作用。在irb
但这有效:
我在这里想念什么?
boolean-logic - 布尔逻辑:德摩根定理,与非门
我正在尝试为我的布尔方程的以下部分构建一个电路:
扩展这一点,我们当然得到:
根据德摩根定理,我认为我们可以将其简化为
我虽然可以简化为:ABCDE,因为 A * A = A。
但是,当我将 ABCDE 放入 NAND 门时,我没有得到我需要的结果。为什么是这样?我的逻辑哪里出错了?
编辑:所以@Leandro Caniglia 解释了这个问题:
那么我可以减少它的最远距离:
(AB)! + !C(DE)!
?
有没有其他方法可以简化它?
boolean-logic - 反相输入的与非门
如果我要表达:
并使用德摩根定律将其转换为:
在将其放入与非门之前,我是否必须反转每个位?有没有更简单的方法?
编辑:没有捷径。你必须做(!A!B!C!D!E)!
haskell - 德摩根定律实施中的 Haskell 点 (.) 运算符
在这个问题中,作者在 Haskell 中编写了德摩根定律的实现。我了解notAandnotB
, 和的实现notAornotB
,但我很难理解其实现notAorB
是:
有人可以解释这(f . Left, f . Right)
部分是如何工作的吗?我见过.
之前使用过的运算符,但它带有三个参数,而不是两个。
先感谢您。
prolog - 替换数学公式中的参数时出错
在替换数学公式中的参数时,我遇到了一些递归问题。
我使用谓词替换数学公式中的参数。
在 1 种情况下,它可以正常工作,当:
- % 初始公式:(x y/5-z)+x y*w
- % 查找:x*y
- % 替换:xa*y+1
- % 在前缀视图中准备公式:+/*xy -5z **xyw
- % 在前缀视图中查找:*xy
- % 在前缀视图中替换:*-xa+y1
%正确工作示例
% 替换后的结果:
在 2 情况下它不起作用,我无法解决问题,已经几天了......
- % 初始公式:((x->z)->((y->z)->(x/y->z))->(x/y->z))
- % 查找:A->B
- % 替换:不是(A/B)
- % 评论:逻辑德摩根规则。蕴涵定理。
- % 在前缀视图中准备公式:( ->->->xz ->->yz->/xyz ->/xyz )
- % 在前缀视图中查找:->(A, B)
- % 在前缀视图中替换:not(/(A, B))
%不工作示例 1):
% 替换后的结果:
%尝试了另一种方式,但没有成功达到目标:
% 替换后的结果:
但是,如果手动将先前的结果插入到新的调用中,那么将再进行一次替换。
%从replace3手动插入之前的结果到replace4
% 替换后的结果:
有人可以给我建议做错了什么吗?我试图尽可能完整地解释。非常感谢您的帮助!
boolean - 使用 DeMorgans 简化布尔表达式
这是我需要简化的表达式:
[{(AB)'*(BC)'} + (A'C)']'
现在我的答案是(AB + BC)。(A' + C)
我不认为我的答案是正确的,但我不确定。如果有人可以展示如何简化的步骤,将不胜感激,谢谢!
expression - 逻辑表达式,化简
我目前正在尝试学习如何简化逻辑表达式。但是我被困在了这个任务上,我要证明这个表达式要么是重言式,要么是矛盾的。我需要一些帮助来简化以下表达式:
(a and not b) or (not a or b)
我不知道从哪里开始简化。如果有人能告诉我应该从哪条法律开始,我将不胜感激。