my-Tool.comに戻る
Google
  
my-Tool.com: ビーワイズビット - ブール表現を検索したり真理表を表示したりするビット関連のタスクを実行する。 - 真理を求める
IPアドレス
MaximaPHP
正規表現テスタ
数学
ゲーム
ネットワーク
インターネットコード
日付と時間
文字列とテキスト
ワードドメイン
コードテスタ
ビーワイズビット
ランキン
質問と答え
僕について
フォーラム
AdManner
無料広告サイト
インドネシア語
英語
TrafficSwarm: free advertisement
   
真理を求める   真理を示す   

真理を求める

真理表の1セットの結果に対してブール表現を検索する。



変数が何回か繰り返されるような長いブール表現は時々ソースコードの中に入っている。このようなブール表現はより簡単な何らかのブール表現で置き換えることができればもっと効率的でもっとエレガントになるだろう。

たとえば、ブール表現

result = a & (b | c) ^ a & ~b | ~c ;

はa、b、cの変数がそれぞれ2回繰り返されたので、以下のようなより簡単なブール表現で置き換えられる可能性がある。

result = a & b | ~c ;

カルノー図(またはベイチ図)はブール式をよく理解するためにとても役に立つのに対して、このツールは時間を節約するために役に立つかもしれない(運がよければ ^^)。まずは、ブール表現に対して真理を示すを用いて真理表を構築して、その結果に対してブール表現を以下で検索する。

結果を検索 演算子
変数の数
表現の長さ: 否定も含める


注意:Javascriptではビット演算子の優先順位は ~, &, ^, | で、表現 a|~b&c^d の意味は a|(((~b)&c))^d) または論理的には a || (((!b) && c) XOR d) である。しかしJavascriptは論理的XORをサポートしていないので、それを a XOR b = (a || b) && !(a && b)でシミュレートする。



僕がこのツールを書いたのはもっと単純なツール、HTMLエンコーダに取り組んだときだった。エンコード関数の核心には文字がHTMLコード表にエントリがあるかをチェックして、あればそれを返す、なければ元の文字を返す。さらに文字がスペースの場合は、ユーザがそれをエンコードするかどうかを選択できる。これが働くにつぎのような分枝を必要とする。

return spc ? (html ? html : c) : (c==' ' ? c : (html ? html : c)) ;

この分枝をブール式として考えるとその真理表は以下のようなものになる。

spchtmlc==' '結果
1111(html)
1101(html)
1010(c)
1000(c)
0110(c)
0101(html)
0010(c)
0000(c)

さて、まったく同じ結果を返すようなもっと単純なブール表現で以上の分枝を置き換えたい。やるべきことはただひとつ、「11000100」という結果に対して3変数で検索するだけ。表現の長さが3のときは何も表現を見つからなかったが、4のときは以下の表現を見つかった。
  • (b & c & ~a) ^ b
  • (b & ~c) | (a & b)
Javascriptは論理的なXORを持っていないので、分枝を置き換えるには以下のように最後の表現を使うことにした。

return ((html && !(c==' ')) | (spc && html)) ? html : c ;

このツールを利用したほとんどのお客様は以下のツールも利用しました。
カレンダー (9.1%), Source (9.1%), Source (9.1%)
source
©2006 my-Tool.com