U283454 离散数学之逻辑表达式
题目背景
对于只能取真和假的简单命题变元,通过逻辑连接词(例如与、或、非)等连接起来的表达式称为命题
表征命题在所有输入可能取值状态下对应的值的表格即为真值表。
例如现在有两个简单命题变元$p$和$q$,通过逻辑连接词$∧$连接为命题$p∧q$,则该命题的真值表即为:
| $p$ | $q$ | $p∧q$ |
| :--- | :--- | :----- |
| F | F | F |
| F | T | F |
| T | F | F |
| T | T | T |
对于逻辑连接词而言,满足一元逻辑连接词优先于二元运算连接词,二元运算连接词之间优先级相同,但如果存在括号,则括号内的优先级最高
命题的同优先级的演算遵循从左到右的规则。
题目描述
如题,为逻辑表达式求解真值表。
输入格式
两行输入
第一行为多个字母,由空格隔开,表示这一组数据中的出现的简单变元的字符 **(简单变元字符仅可能为小写字母,保证不会重复)**
第二行为一行逻辑表达式,由第一行中出现过的字符和逻辑连接词组成,**为方便大家表示,本题规定逻辑连接词包括`&`,`|`,`~`,`(`,`)`**
其意义如下
- `&`:与运算
- `|`:或运算
- `~`:非运算
- `(`:左括号
- `)`:右括号
输出格式
令输入的简单变元个数为 $n$ (这个 $n$ 需要自己计数)
则总输出为 $2n+1$ 行,每行 $n+1$ 列,列于列之间以`|`隔开,列内容与`|`符号之间留出一个空格
第一行为表头,前 $n$ 列为输入的简单命题变元字符,第 $n+1$ 列为 $R$ ,代表`Result`
接下来 $n$ 行,每行代表每种取值可能对应的命题结果,真以**T**表示,假以**F**表示
输入顺序满足命题变元代表的二进制数的升序,以包括四个简单命题变元的命题为例
`FFFF`即`0000`代表`0`,则首先输出,`FFFT`即`0001`代表`1`,第二个输出,依次类推,直到所有情况输出完成
说明/提示
给出的简单命题变元不会超过 $10$ 个
命题中逻辑连接词+命题变元长度不超过 $300$ 个