構文
~
ない
/\
と
\/
もしくは
t
真
f
偽
P
、Q
、FISH
、など:変数
(演算子は優先順位の順に与えられます)
前書き
一部のブール式は、短くするために異なる形式に変更できます。たとえば、式
~(~P /\ ~Q)
短い形式に変更できます
P\/Q
数式
P \/ ~P
短い形式に変更できます
t
チャレンジ
この課題では、のみ使用して、任意のブール式が与えられると、そのプログラムの書き込みに必要とされる/\
、\/
、~
、t
、f
複数の最短形態が存在し得るので、括弧、ブール(大文字で)変数、および空白を、(最短形式を出力します)変数のすべての割り当てに相当する式の文字。最短のコード(すべての言語)が勝ちます。I / Oは、合理的な方法で実行できます。
また、答えを確認するのは難しいので、コードがどのように機能するかの簡単な説明を含めると役立ちます(ただし、必須ではありません)。
「チャレンジ」セクションでは、空白については言及していませんが、例には空白が含まれています。それらを処理する必要がありますか?
—
ビクターStafusa 14年
フロレントのポイントは、ゴルフだけでなく、一般的に解決するのが難しい問題だと思います。とりわけ、パーサーは、2つの任意の式が同じ真理条件を持っているかどうかを判断できる必要があります。pがアトミックであればp ^〜pを減らすのは簡単ですが、((A ^ B)v(A ^ C))^〜(A ^(BvC))はどうですか?私はそれがクールな問題だと思うし、私はいくつかの応答を見たいと思っています。ただし、短い解決策が必要な場合は、A。プレフィックス表記を使用して、B。必要な削減のリストを提供することにより、ゴルフをより助長することができます。
—
dfernig 14年
5000文字以上の有効な(ゴルフの)ソリューションがあります。これはばかげています...トークナイザー、ASTパーサー、ASTリライター、および式ジェネレーターで構成されています。
—
フローレント14年
Mathematicaは1回の関数呼び出しでそれを行うことができます(
—
Florent
BooleanMinimize
)
記録のために、sha256sumがである498文字のソリューションがあり
—
リリーチョン
b9c98d088b78c30bb2108008a064a7b95722a4694d90ddad94a025c2eb4ed30a
ます。創造性を抑えたくないため、実際のコードは後日掲載します。