问题标签 [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.

0 投票
7 回答
4518 浏览

c - 代码中的真值表?如何构造状态机?

我有一个(有点)大的真值表/状态机,需要在我的代码(嵌入式 C)中实现。我预计此状态机的行为规范将来会发生变化,因此我希望将来可以轻松修改它。

我的真值表有 4 个输入和 4 个输出。我将所有内容都保存在 Excel 电子表格中,如果我可以将其粘贴到我的代码中并进行一些格式化,那将是理想的选择。

我在想我想像这样访问我的真值表:

然后我可以通过以下方式访问输出值:

但为了得到它,看起来我必须做一个相当混乱的表,如下所示:

那些嵌套的括号可能有点令人困惑——有没有人对如何在我的代码中保持漂亮的表格有更好的想法?

谢谢!

根据 HUAGHAGUAH 的回答进行编辑:

结合每个人的输入(谢谢——我希望我能“接受”这些答案中的 3 个或 4 个),我想我会尝试将它作为一个二维数组。我将使用一个小的位移宏来索引我的数组:

这将使我的真值表数组看起来像这样:

然后我可以像这样访问我的真值表:

我会试一试,看看效果如何。我还将用更有用的 #defines 替换 0 和 1,这些 #defines 表达了每个状态的含义,以及解释每行输出的输入的 /**/ 注释。谢谢大家的帮助!

0 投票
3 回答
796 浏览

math - 任何人都可以解释对立面吗

我正在尝试为以下语句构造一个反例:如果 A 为 0 或 B 为 0,则 A*B 为 0。

这是我的尝试:如果 A*B 不是 0,那么 A 不是 0 或 B 不是 0。

原始陈述是正确的,但是相反的陈述是错误的,因为 AB 都必须非零才能使 A*B 非零......我做错了什么吗?

0 投票
5 回答
11613 浏览

c# - 如何构建真值表生成器?

我正在寻找将真值表生成器作为个人项目编写。

这里这里有几个基于网络的在线网站。

替代文字
(Example screenshot of an existing Truth Table Generator)

我有以下问题:

  • 我应该如何解析表达式,例如:((P => Q) & (Q => R)) => (P => R)
  • 我应该使用像 ANTLr 或 YACC 这样的解析器生成器,还是直接使用正则表达式?
  • 一旦我解析了表达式,我应该如何生成真值表?表达式的每个部分都需要分成其最小的组件,并从表格的左侧到右侧重新构建。我将如何评价这样的事情?

谁能向我提供有关解析这些任意表达式并最终评估解析表达式的提示?

0 投票
2 回答
1133 浏览

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 小时的模式......

只看布尔数组,我就觉得肯定有一个更简单的解决方案——也许是一个以某人命名的算法。正如您可能从上面推断的那样,我不一定知道如何提出这个问题。;)

谢谢你的时间!

0 投票
2 回答
5989 浏览

prolog - Prolog 一阶逻辑 - 打印真值表

我必须编写打印表达式真值表的程序。所以,我写了以下函数:

我的问题是 E(即包含 A 和 B 的表达式)没有被评估,而是按原样打印。例如:

我有兴趣写and(true, true)(“ and(X,Y)”是我之前定义的函子)的评估值,而不是当前显示的值。我想过写一个 eval 函子,但它不会有同样的效果吗?我该如何解决这个问题?

我正在使用 SWI-Prolog 5.8。谢谢你。

0 投票
1 回答
1364 浏览

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 看起来像这样

我想我明白了吗?:)

0 投票
2 回答
2240 浏览

boolean-logic - 数字逻辑 - 真值表

我正在尝试使用以下公式通过真值表解决这些问题。我遇到了 NOT to NAND 的问题

我想我用正确的方法解决了前两个问题:AND 等同于 NOR,AND 等同于 NAND

使用 NAND 运算符的 AND、OR 和 NOT 等式是:

仅使用 NOR 运算符的 AND、OR 和 NOT 等式是:

我正在尝试遵循这个公式

这就是我如何计算出与 NOR 等效的方法

我最大的问题是如何在真值表的输出中使用 NOT?另外,我将如何从 NOT 变为 NOR?我想在真值表中解决所有这些问题。

真值表中的输出是什么?我怎样才能从 X' 到等效的 NAND?

0 投票
3 回答
399 浏览

java - 验证真值表的最少检查次数


我有一个 java 程序,我想验证 3 个布尔值中的任何一个是否为假。我想找出我可以写来检查排列的最小表达式。

if(!(needsWork && (needsApproval || isAdmin) ))

我认为这足以确保如果 3 个布尔值中的任何一个为假,我想停止处理。但是,我偷偷地怀疑我错过了一些东西。

0 投票
3 回答
717 浏览

truthtable - 真值表来证明一个论点真/假

有人可以帮我用真值表吗?我想创建一个真值表来证明这是否正确。

0 投票
4 回答
193 浏览

javascript - 如何让用户安全地输入 JavaScript 函数?

我正在做的是创建一个真值表生成器。使用用户提供的函数(例如a && b || c),我试图让 JavaScript 显示 a、b 和 c 的所有组合以及函数的结果。

关键是我不完全确定如何解析用户提供的函数。用户基本上可以将他想要的所有东西放在一个函数中,这可能会产生我的网站被更改等的效果。

eval()根本不安全;两者都不是new Function(),因为两者都可以使用户在功能中随心所欲。通常JSON.parse()是一个很好的替代方法eval(),但是 JSON 中不存在函数。

所以我想知道如何将自定义布尔运算符字符串解析为a && b || c函数,而忽略任何恶意代码字符串。&&, ||, !函数内部只允许使用布尔运算符 ( )。