问题标签 [truthtable]
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.
c - 代码中的真值表?如何构造状态机?
我有一个(有点)大的真值表/状态机,需要在我的代码(嵌入式 C)中实现。我预计此状态机的行为规范将来会发生变化,因此我希望将来可以轻松修改它。
我的真值表有 4 个输入和 4 个输出。我将所有内容都保存在 Excel 电子表格中,如果我可以将其粘贴到我的代码中并进行一些格式化,那将是理想的选择。
我在想我想像这样访问我的真值表:
然后我可以通过以下方式访问输出值:
但为了得到它,看起来我必须做一个相当混乱的表,如下所示:
那些嵌套的括号可能有点令人困惑——有没有人对如何在我的代码中保持漂亮的表格有更好的想法?
谢谢!
根据 HUAGHAGUAH 的回答进行编辑:
结合每个人的输入(谢谢——我希望我能“接受”这些答案中的 3 个或 4 个),我想我会尝试将它作为一个二维数组。我将使用一个小的位移宏来索引我的数组:
这将使我的真值表数组看起来像这样:
然后我可以像这样访问我的真值表:
我会试一试,看看效果如何。我还将用更有用的 #defines 替换 0 和 1,这些 #defines 表达了每个状态的含义,以及解释每行输出的输入的 /**/ 注释。谢谢大家的帮助!
math - 任何人都可以解释对立面吗
我正在尝试为以下语句构造一个反例:如果 A 为 0 或 B 为 0,则 A*B 为 0。
这是我的尝试:如果 A*B 不是 0,那么 A 不是 0 或 B 不是 0。
原始陈述是正确的,但是相反的陈述是错误的,因为 A和B 都必须非零才能使 A*B 非零......我做错了什么吗?
algorithm - 基于大型真值表生成所有组合的算法方法
如果这已在其他地方得到回答,我深表歉意,但我还没有使用我有限的算法术语找到它。;)
我的情况是这样的——我有可变数量的数据元素,每个数据元素都经过测试,以确定兼容性。兼容性存储在等效于二维数组(真值表?)中。我的目标是生成这些数据元素的所有可能组合,其中组合中的每个元素都与其他元素兼容。
例如,如果元素 1 (of 4) 与元素 2 和 4 兼容,元素 2 与 1、3 和 4 兼容,元素 3 与 2 兼容,元素 4 与 1 和 2 兼容,我的真值表将看起来像:
1) {1,1,0,1}
2) {1,1,1,1}
3) {0,1,1,0}
4) {1,1,0,1}
我想要的组合是:
1,2,4
1,2
1,4
1
2,3
2,4
2
3
4
我的方法在许多情况下都适用,但有时在元素数量超过 5000 时会陷入严重困境,具体取决于数据集。我的次要挑战是确定将执行时间从 5 秒增加到 3 小时的模式......
只看布尔数组,我就觉得肯定有一个更简单的解决方案——也许是一个以某人命名的算法。正如您可能从上面推断的那样,我不一定知道如何提出这个问题。;)
谢谢你的时间!
prolog - Prolog 一阶逻辑 - 打印真值表
我必须编写打印表达式真值表的程序。所以,我写了以下函数:
我的问题是 E(即包含 A 和 B 的表达式)没有被评估,而是按原样打印。例如:
我有兴趣写and(true, true)
(“ and(X,Y)
”是我之前定义的函子)的评估值,而不是当前显示的值。我想过写一个 eval 函子,但它不会有同样的效果吗?我该如何解决这个问题?
我正在使用 SWI-Prolog 5.8。谢谢你。
boolean-logic - 布尔逻辑和真值表解释
我需要创建一个真值表,我真的需要找到一个资源来解释它是如何工作的。我将举一个问题的例子。我必须基于此创建一个真值表: A*(B+A B)=A B 所以真值表看起来像:
0 0
0 1
1 0
1 1 for A*(B+A B)=A B
我什至如何开始解决这个问题?有没有什么好的资源可以很好地解释该怎么做?
好的,然后我做了一个更复杂的涉及 NOT 的操作。!表示不
!(A*!B+!A B) = A B+!(A+B)
所以我对左侧做了 C = A*!BD=!A*B 然后 !(C+D) 。我对那方面的最终答案是
所以右边是这个
C = A * BD = A + B 然后 C + !D 看起来像这样
我想我明白了吗?:)
boolean-logic - 数字逻辑 - 真值表
我正在尝试使用以下公式通过真值表解决这些问题。我遇到了 NOT to NAND 的问题
我想我用正确的方法解决了前两个问题:AND 等同于 NOR,AND 等同于 NAND
使用 NAND 运算符的 AND、OR 和 NOT 等式是:
仅使用 NOR 运算符的 AND、OR 和 NOT 等式是:
我正在尝试遵循这个公式
这就是我如何计算出与 NOR 等效的方法
我最大的问题是如何在真值表的输出中使用 NOT?另外,我将如何从 NOT 变为 NOR?我想在真值表中解决所有这些问题。
真值表中的输出是什么?我怎样才能从 X' 到等效的 NAND?
java - 验证真值表的最少检查次数
我有一个 java 程序,我想验证 3 个布尔值中的任何一个是否为假。我想找出我可以写来检查排列的最小表达式。
if(!(needsWork && (needsApproval || isAdmin) ))
我认为这足以确保如果 3 个布尔值中的任何一个为假,我想停止处理。但是,我偷偷地怀疑我错过了一些东西。
truthtable - 真值表来证明一个论点真/假
有人可以帮我用真值表吗?我想创建一个真值表来证明这是否正确。
javascript - 如何让用户安全地输入 JavaScript 函数?
我正在做的是创建一个真值表生成器。使用用户提供的函数(例如a && b || c
),我试图让 JavaScript 显示 a、b 和 c 的所有组合以及函数的结果。
关键是我不完全确定如何解析用户提供的函数。用户基本上可以将他想要的所有东西放在一个函数中,这可能会产生我的网站被更改等的效果。
eval()
根本不安全;两者都不是new Function()
,因为两者都可以使用户在功能中随心所欲。通常JSON.parse()
是一个很好的替代方法eval()
,但是 JSON 中不存在函数。
所以我想知道如何将自定义布尔运算符字符串解析为a && b || c
函数,而忽略任何恶意代码字符串。&&, ||, !
函数内部只允许使用布尔运算符 ( )。