0

ユーザーが文字列として入力した式(有効な論理式)の真理値表を計算したい。誰かがこれに対する既存のソリューションを投稿したり、そうするように私を案内したりできますか?? BitArray (サイズ 2^no. 変数) を出力 (真理値表) として使用することを考えています。しかし、開始する方法がわからない。これで私を助けてください。

元:-

 p or q or r

結果は次のようになります

 False True True True True True True True 

 a and b 

結果は次のようになります

 False False False True 
4

3 に答える 3

1

CKen ( http://cken.sourceforge.net/ )だと思います (あなたにとっては良いことです)。

CKen は「大文字」と「小文字」の両方をサポートしているため、58 (= 2x29) 個の単一変数をサポートしています!

そして、最も重要な複数式を (区切り文字で) 使用できます。

例:a,b,c,d,e;(a+b)*c;d*e#a;

その反面、めちゃめちゃ速い!


変数 (変数) を式で使用する前に、変数を定義する必要があります。

于 2015-04-06T09:46:44.787 に答える
1

サードパーティのライブラリを使用しない方法は、DataTable を式で使用することです。

そこには、単なるブール値以外の結果値の型を評価する可能性さえあります。

System.Data.DataTable table = new System.Data.DataTable();
table.Columns.Add("", typeof(Boolean));
table.Columns[0].Expression = "true and false or true";

System.Data.DataRow r = table.NewRow();
table.Rows.Add(r);
Boolean result = (Boolean)r[0];

式の構文は例と同じではありませんが、同じことを行います。利点は、100% .NET フレームワークが含まれていることです --> Microsoft が管理します。エラー処理も悪くありません。欠落している演算子などの例外...

利用可能なオペレーター

于 2012-05-25T10:16:06.197 に答える
1

最初に、文字列入力を解析して、変数と式の構造 (つまり、どの操作がどの部分式に適用されるか) を見つける必要があります。

それが完了したら、変数の状態を 2 進整数として表すことができます。この表現を使用すると、0 (すべての変数が false であることを意味します) から開始して、真理値表の行ごとに整数表現を 1 ずつ増やすことができます。このようにして、考えられるすべての組み合わせを一度だけ説明できます。

次に、変数の値を式に適用し (問題の変数の整数のビット値に従って true/false を代入します)、式の値を計算します。

結果のコンパクトな表現が必要な場合は、出力のインデックスが変数値の上記の整数表現に対応する線形コレクション (ベクトルなど) に各入力の組み合わせの式の値を格納するだけです。どの変数が入力のどのビットにマップされているかがわかっている場合は、必要なときにいつでも完全なテーブルを再作成できます (印刷など)。

于 2012-05-25T10:16:18.473 に答える