学校時代に戻ったことを思い出すと、真理値表について学んだことを覚えているかもしれません。彼らは退屈そうに見えたが、彼らは論理の基盤であり、(一部の人は主張する)すべてのコンピューティング...
問題
あなたの使命は、あなたがそれを受け入れることを選択した場合、入力が与えられた真理値表を出力できるコードのプログラム、関数、またはウィジェットを書くことです。
入力
入力は、真理値表を作成する論理ステートメントを含む文字列(データ構造など)になります。例えば:
p ∧ q
これはp and q
(論理結合)を意味し、以下を出力します:
p q p ∧ q
T T T
T F F
F T F
F F F
間隔に注意してください:列のアイテムはヘッダーの中央にあります
キャラクター
バイトではなく文字でスコアを付ける 論理比較文字は特別であり、常に見た目が同じではありません。次の文字を使用します。
論理積(AND):∧
U + 2227
論理和(OR):∨
U + 2228
論理否定(NOT)~
またはそれぞれ¬
U + 7eおよびU + ac
ボーナス
これらのボーナスはすべてオプションですが、スコアからポイントを奪います。どれか選んでください。
論理否定
論理否定は、真理値表の単項演算子です。!
ほとんどのCベースの言語と同等です。それは可能false
=> true
と万力その逆。¬
またはで 表記され~
ます(両方をサポートする必要があります)。これをサポートすると、スコアの10%がノックオフされます。ただし、結果を表示するには追加の列を追加する必要があります。例:
~p ∧ q
出力されます:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
プリティプリント
通常のテーブル表記は退屈です。きれいにしましょう!プリティプリントの形式は次のとおりですp ∧ q
。
+---+---+-------+
| p | q | p ∧ q |
+---+---+-------+
| T | T | T |
+---+---+-------+
| T | F | F |
+---+---+-------+
| F | T | F |
+---+---+-------+
| F | F | F |
+---+---+-------+
プリティ印刷の特別な詳細:
- 各セルに1つのスペースパディングがあります
- セル値はまだ中央揃えです
コードからテーブルをきれいに印刷し、0.6を掛けます。このボーナスにこの機能を使用します。
score = 0.6 * code
例
p ∧ q
:
p q p ∧ q
T T T
T F F
F T F
F F F
p ∨ q
:
p q p ∨ q
T T T
T F T
F T T
F F F
~p ∧ q
:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
~p ∨ q
:
p ~p q ~p ∧ q
T F T T
T F F F
F T T T
F T F T
ルール
- 標準的な抜け穴が適用されます
- 外部リソースなし
- あなたが規則を破ろうとするなら、賢くてください;)
最短コード(文字数)が優先されます。幸運を!
score = 0.6 * (code - 15)
=.6 * code - 9
p
q
とr
真理値表に;)
p
およびq
です。それらに常にこれらの名前がある場合を除き、テスト例でいくつかの異なるオプションを表示することができます。それらは常に単一の文字ですか?