Якщо ви пам’ятаєте ще про шкільні роки, ви могли б пам’ятати, дізнавшись про таблиці правди . Вони здавалися нудними, але вони є основою для логіки і (дехто заперечує) всіх обчислень ...
Проблема
Ваша місія, якщо ви вирішите її прийняти, це написати програму, функцію або віджет коду, який може вивести таблицю істинності із заданим входом.
Вхідні дані
Введенням буде рядок (як структура даних), що містить логічний вислів для внесення таблиці Істини. Наприклад:
p ∧ q
Це означає p and q
(логічна сполука) і виведе:
p q p ∧ q
T T T
T F F
F T F
F F F
Помітьте пробіл: елемент стовпця знаходиться в центрі заголовка
Персонажі
Оцінка за допомогою символів, а не в байтах Символи порівняння логіки є особливими і не завжди такими, якими вони виглядають. Використовуйте ці символи:
Логічна сполука (AND): ∧
U + 2227
Логічна диз'юнкція (АБО): ∨
U + 2228
Логічне заперечення (НЕ) ~
або ¬
U + 7e і U + ac відповідно
Бонуси
Усі ці бонуси необов’язкові, але знищують бали. Виберіть будь-яку.
Логічне заперечення
Логічне заперечення є одинаковим оператором у таблицях істинності. Це еквівалент !
більшості мов на базі С. Це робить false
=> true
і навпаки. Він позначений символом a ¬
або ~
(ви повинні підтримувати обидва). Підтримка цього знищить 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
. Якщо вони завжди мають ці назви, ви можете показати кілька варіантів у тестових прикладах. Чи завжди вони є однією буквою?