問題タブ [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 つを "受け入れる" ことができればいいのにと思います)、2 次元配列として試してみようと思います。小さなビットシフト マクロを使用して、配列にインデックスを付けます。

これにより、真理値表の配列は次のようになります。

そして、次のように真理値表にアクセスできます。

私はそれを試してみて、それがどのように機能するかを見ていきます. また、0 と 1 を、出力の各行の入力を説明する /**/ コメントと共に、各状態の意味を表すより役立つ #define に置き換えます。助けてくれてありがとう、みんな!

0 投票する
3 に答える
796 参照

math - 誰か対比を説明できますか

次のステートメントの対比を構築しようとしています: A が 0 または B が 0 の場合、A*B は 0 です。

これが私の試みです: A*B が 0 でない場合、A は 0 ではないか、B は 0 ではありません。

元のステートメントは true ですが、A*B が非ゼロになるためには AB の両方が非ゼロでなければならないため、対比は偽です...何か間違ったことをしていますか?

0 投票する
5 に答える
11613 参照

c# - 真理値表ジェネレーターを構築するにはどうすればよいですか?

個人的なプロジェクトとして真理値表ジェネレーターを書きたいと思っています。

ここここに Web ベースのオンラインのものがいくつかあります。

代替テキスト
(Example screenshot of an existing Truth Table Generator)

次の質問があります。

  • ((P => Q) & (Q => R)) => (P => R)のような式を解析するにはどうすればよいですか?
  • ANTLr や YACC などのパーサー ジェネレーターを使用する必要がありますか、それとも正規表現をそのまま使用する必要がありますか?
  • 式を解析したら、真理値表を生成するにはどうすればよいですか? 式の各セクションを最小のコンポーネントに分割し、テーブルの左側から右側に再構築する必要があります。そのようなものをどのように評価しますか?

これらの任意の式の解析と最終的に解析された式の評価に関するヒントを教えてもらえますか?

0 投票する
2 に答える
1133 参照

algorithm - 大規模な真理値表に基づいてすべての組み合わせを生成するアルゴリズム的アプローチ

これが他の場所で回答されている場合は申し訳ありませんが、限られたアルゴリズム用語を使用してまだ見つけていません。;)

私の状況は次のとおりです。さまざまな数のデータ要素があり、それぞれが他のデータ要素に対してテストされ、互換性が判断されています。互換性は、2 次元配列 (真理値表?) に相当するものに格納されます。私の目標は、組み合わせ内のすべての要素が他の要素と互換性がある、これらのデータ要素のすべての可能な組み合わせを生成することです。

たとえば、要素 1 (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 を超えると、ひどく行き詰まることがあります。2 つ目の課題は、実行時間を 5 秒から 3 時間にするパターンを特定することです...

ブール配列を見るだけで、もっと簡単な解決策があるに違いないと感じます-おそらく誰かにちなんで名付けられたアルゴリズムです。上記から推測できるように、私は必ずしも質問の仕方を知りません。;)

御時間ありがとうございます!

0 投票する
2 に答える
5989 参照

prolog - Prolog First Order Logic - 真理値表の出力

式の真理値表を出力するプログラムを作成する必要があります。そこで、次の関数を書きました。

私の問題は、 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を含むもう1つの複雑なことをしました。!ないことを示します

!(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 に問題があります

最初の 2 つの問題は正しいと思います: AND は NOR に相当し、AND は NAND に相当します

NAND 演算子を使用した AND、OR、および NOT の式は次のとおりです。

NOR 演算子のみを使用した AND、OR、および NOT の式は次のとおりです。

私はこの式に従おうとしています

これは、私がANDからNORに相当する方法です

私の最大の問題は、真理値表の出力でどのように NOT を使用するかです。また、どのように NOT から NOR に移行しますか? これらすべてを真理値表で解決したいと思います。

真理値表の出力は何ですか? どうすればX'から同等のNANDに移行できますか?

0 投票する
3 に答える
399 参照

java - 真理値表を検証するためのチェックの最小数


3つのブール値のいずれかがfalseであるかどうかを検証したいJavaプログラムがあります。順列をチェックするために書くことができる最小の式を見つけたいと思います。

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

これは、3つのブール値のいずれかがfalseの場合に、処理を停止したいことを確認するのに十分だと思います。しかし、私は何かが足りないというこっそりの疑いがあります。

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そのため、悪意のあるコード文字列を無視しながら、カスタムのブール演算子文字列を関数のように解析する方法を考えていました。関数内ではブール演算子 ( &&, ||, !) のみを使用できます。