如果您还记得上学的那段时间,您可能还记得有关Truth Tables的学习。它们看起来很无聊,但是它们是逻辑和(所有人都会争辩)所有计算的基础...
问题
您选择接受的任务是编写可以在给定输入的情况下输出真值表的程序,函数或代码小部件。
输入值
输入将是一个字符串(如数据结构),其中包含将真值表放入其中的逻辑语句。例如:
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   |
+---+---+-------+
漂亮印刷的特殊细节:
- 每个单元格中有一个空格填充
- 单元格值仍居中
如果您漂亮地打印表格,请从代码中乘以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。除非它们始终具有这些名称,否则您可能希望在测试示例中显示一些其他选项。他们总是一个字母吗?