Ваша миссия, если вы решите принять ее, - создать простой оценщик правды для следующих логических операторов:
----------------------------------------------------------------------------------
Logical Name | Gate Name | Symbol | Symbol Name | Truth Table
----------------------------------------------------------------------------------
Identity | is | | (none) | 10
Negation | not | ~ | tilde | 01
Conjunction | and | & | ampersand | 1000
Disjunction | or | | | pipe | 1110
Negative Conjunction | nand | ^ | caret | 0111
Joint Denial | nor | v | "vee" | 0001
Exclusive Disjunction | xor | x | "ecks" | 0110
Equivalence | equals/xnor | = | equals | 1001
Implication | implies | > | greater than | 1011
Таблицы истинности расположены в следующем порядке:
- 1 1
- 1 0
- 0 1
- 0 0
Ввод будет в виде простой строки 0, 1 и символа. Вы можете либо принять ввод в качестве параметра, либо прочитать его от пользователя на stdin. Вот несколько примеров пар ввода / вывода:
Input: 1
Output: 1
Input: ~1
Output: 0
Input: 0|1
Output: 1
Input: 1>0
Output: 0
Унарный оператор (отрицание) всегда будет появляться перед логическим значением, тогда как бинарные операторы всегда будут появляться между двумя логическими значениями. Вы можете предположить, что все входные данные будут действительными. Строки - это обычные строки ASCII.
Если вы предпочитаете, вы можете использовать T и F вместо 1 и 0. -6 для подсчета символов, если вы поддерживаете оба.
Это Код-гольф: самый короткий код на любом языке выигрывает!
^
что имя символа должно быть написано карет .