問題タブ [boolean-logic]

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 投票する
8 に答える
7294 参照

boolean-logic - 論理ゲートシミュレータの作成

論理回路を作成して結果を確認するためのアプリケーションを作成する必要があります。これは主にAレベル(英国、一般的に16〜18歳)のコンピューティングコースで使用するためのものです。

私はこのようなアプリケーションを作成したことがないので、回路を保存して結果を評価するための最適な設計がわかりません(1.6Ghzシングルコアコンピューターで100Hzなどの再利用可能な速度で)。

基本的なゲート(and、or、nandなど)から回路を構築するのではなく、これらのゲートを使用して「チップ」を作成し、他の回路内で使用できるようにします(たとえば、8ビットを作成する場合があります)。レジスタチップ、または16ビット加算器)。

問題は、このような回路ではゲートの数が大幅に増えるため、個々のゲートでシミュレーションを実行すると、シミュレーションするゲートが数千になるため、回路に配置できるこれらのコンポーネントを単純化して、次のことができるようにする必要があります。すばやくシミュレートできます。

コンポーネントごとに真理値表を生成することを考えました。シミュレーションでは、ルックアップテーブルを使用して、特定の入力の出力を見つけることができます。そのようなテーブルのサイズが入力とともに大幅に増加するという問題が私に起こりました。チップに32の入力がある場合、真理値表には2^32行が必要です。これは、多くの場合、使用するよりも大量のメモリを使用するため、重要なコンポーネントには実用的ではありません。また、単純なものとして表すことができないため、状態を格納できるチップ(レジスタなど)でも機能しません。入力と出力の表。

レジスターチップのようなものをハードコーディングすることもできますが、これは教育目的であるため、ユーザーが独自のコンポーネントを作成したり、標準の実装を表示および編集したりできるようにしたいと考えています。このようなコンポーネントをコード(dllやスクリプト言語など)を使用して作成および編集できるようにすることを検討しました。これにより、たとえば加算器を「output = inputA + inputB」として表すことができますが、学生が十分なプログラミングを行っていることを前提としています。そのようなプラグインを理解して記述し、回路の結果を模倣できるようにするための言語が与えられていますが、そうではない可能性があります...

シミュレーションでコンポーネントの出力をすばやく決定できるように、ブール論理回路を自動的に単純化する他の方法はありますか?

コンポーネントの格納に関しては、入力にリンクするすべてのコンポーネントが評価された後に各コンポーネントが評価されるように、ある種のツリー構造を格納することを考えていました。

例:AB + Cシミュレータは、最初にANDゲートを評価し、次にANDゲートとCの出力を使用してORゲートを評価します。

しかし、出力が入力に戻ってリンクしている場合、入力がすべて評価されることはないため、デッドロックが発生することに気づきました...プログラムは1つのゲートで1つのゲートしか評価できないため、これを克服するにはどうすればよいですか?時間?

0 投票する
15 に答える
4349 参照

c# - C# で DeMorgan の定理を適用して、条件文 (if 条件など) のブール式を手動で最適化すると便利ですか?

ほとんどの作業を C と C++ で行っていた当時は、当然のことながら、deMorgan の定理を手動で適用して、重要なブール式を最適化していました。

C# でこれを行うと便利ですか、それともオプティマイザーはこれを不要にしますか?

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

c# - バイトに対してブール論理を実行できないのはなぜですか?

C#(3.5)では、次のことを試します。

エラー132が発生します:「型'int'を'byte'に暗黙的に変換できません。明示的な変換が存在します(キャストがありませんか?)」。同じことが|でも起こります と^。

私は何が間違っているのですか?なぜintについて尋ねられるのですか?バイトに対してブール論理を実行できないのはなぜですか?

0 投票する
8 に答える
23100 参照

sql - SQLクエリ-true=>true、false=>trueまたはfalse

単純なクエリ、おそらく不可能ですが、私はそこにいくつかの賢い人々がいることを知っています:)

ブールパラメータが与えられた場合、特定の列の出力を制限するか、何もしないようにwhere句を定義したいと思います。

したがって、パラメータ@bit = 1が与えられると、これは結果になります。

ここで、column = 1

パラメータ@bit=0が与えられると、これは結果になります。

ここで、column=1または0

つまり、効果がない/すべての結果を表示する(列はビットフィールドです)

私は動的SQLを望んでいません-これをコードで修正することで解決できますが、上記をきちんとシンプルにする巧妙な魔法があるかどうか疑問に思いました。

ある?私はSQLサーバーを使用しています。

乾杯:D

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

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

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

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

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

次の質問があります。

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

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

0 投票する
1 に答える
391 参照

computer-science - ブール式

これが図の正しい方程式であるかどうかを誰かが確認できますか:

C = (A ではない) AND B

代替テキスト http://img34.imageshack.us/img34/3572/111dfh.jpg

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

php - PHPロジック-3つのうち1つまたは2つが設定されていない場合にFalseを返す

情報を収集するフォームがありますが、その1つが電話番号です。電話番号データは、市外局番、最初の3桁、および最後の4つの3つのフィールドから取得されるため、番号はxxx-xxx-xxxx(基本的な米国の形式)の形式になります。

これらの3つのフィールドは必須ではありませんが、誰かが3つのフィールドの任意の組み合わせに入力することを決定した場合は、基本的なエラーチェックを行います。

(彼らが私に市外局番だけを与えたとしましょう-つまり、彼らは私に彼らの番号を与えたかったので、本質的にそれが必要になるので、コードは1)3つのデータセットすべてが送信されたこと、および2)を確認する必要があります3つすべては数字だけです)

これが私がうまくいくと思ったものですが、そうではありません:

助言がありますか?

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

java - Java でのブール式の最適化

Java で次のメソッドを検討してください。

そして、次の主な方法:

論理積 (&& と同じ) は可換演算です。では、コンパイラが if ステートメント コードを同等のものに最適化しないのはなぜですか。

短絡評価を使用する利点はどれですか?

さらに、コンパイラは、より高速なコードを生成するために、他のロジックの単純化やブール値の置換を試みますか? そうでない場合、なぜですか?確かにいくつかの最適化は非常に難しいでしょうが、私の例は単純ではありませんか? メソッドの呼び出しは、ブール値の読み取りよりも常に遅くなるはずですよね?

前もって感謝します。

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

algorithm - 特定の命令セットの結合正規形表現を最適化するためのアルゴリズム?

Espresso ロジック ミニマイザーを使用して、一連のブール方程式の最小化された形式を生成しています。ただし、プログラマブル アレイ ロジック (Espresso が通常使用されるもの) のロジックを生成するのではなく、これらを標準のマイクロプロセッサに実装することを検討しています。問題は、Espresso が結合正規形で出力を生成することです。これは PAL には最適ですが、x86 または PPC には最適ではありません。

たとえば、Espresso は XOR を完全に無視します。以下の Espresso 出力では、部分式(!B0&!B1&B2&!B3) | (!B0&!B1&!B2&B3)は と同等(!B0&!B1&(B2^B3))です。この置換により、式のゲート深度/クリティカル パスが増加しますが、周囲の任意の CPU の実行リソースを完全に飽和させるのに十分な数の項を含む式を見ていることを考えると、ゲート深度を減らすためにゲート深度をトレードオフすることが合理的であるように思われます。全体の命令数。また、関心のある一部のプロセッサで利用可能な ANDC や NOR などの命令の使用方法を理解するために、それを拡張したいと思います。

私が見ているCNF式の例:

したがって、これを実際の質問にするには; 優先順:

私が望む種類の表現を生成する Espresso のオプションまたは拡張機能を知っていますか?

PALのCNFを生成するだけでなく、さまざまなゲートタイプを理解する(または教えることができる)ブール論理最小化のためのツールを知っていますか?

上記のような CNF 式から、追加のタイプのゲートを使用した式に変換するアルゴリズムを知っていますか?

そのためのアルゴリズムを知らない場合、これを行う際に役立つヒューリスティックを知っていますか、または考えることができますか?

(そして、あなたがそれを提案しようとしていた場合に備えて-テストでは、GCCとICC(または、存在する他のCコンパイラー)は、CNF式からプロセッサー固有の最小化を行うほど賢くないことが示されています-それは本当に素晴らしいことですが、両方の -O3 -S の出力を調べると、XOR を使用できるケースをキャッチすることさえできないことがわかります)。