Если вы вспоминаете свои школьные годы, вы, возможно, помните, что изучали Таблицы правды . Они казались скучными, но они являются основой для логики и (некоторые могут поспорить) всех вычислений ...
проблема
Ваша миссия, если вы решите принять ее, это написать программу, функцию или виджет кода, который может выводить таблицу истинности при заданном входном сигнале.
вход
Входными данными будет строка (например, структура данных), содержащая логический оператор, в который будет преобразована таблица истинности. Например:
p ∧ q
Это значит p and q
(логическая конъюнкция) и выдаст:
p q p ∧ q
T T T
T F F
F T F
F F F
Обратите внимание на интервал: элемент столбца находится в центре заголовка
Персонажи
Оценка через символы, а не байты . Символы логического сравнения особенные и не всегда выглядят так, как они выглядят. Используйте эти символы:
Логическое соединение (И): ∧
U + 2227
Логическая дизъюнкция (ИЛИ): ∨
U + 2228
Логическое отрицание (НЕ) ~
или ¬
U + 7e и U + ac соответственно
Бонусы
Все эти бонусы не являются обязательными, но будут сбивать очки с вашего счета. Выберите любой.
Логическое Отрицание
Логическое отрицание - это унарный оператор в таблицах истинности. Это эквивалент !
большинства языков на основе Си. Это делает 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 |
+---+---+-------+
Специальные детали для красивой печати:
- В каждой ячейке есть 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
. Если у них не всегда есть эти имена, вы можете захотеть показать несколько разных вариантов в тестовых примерах. Это всегда одна буква?