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$ 个