Логическое выражение

> Лучше изучите логические элементы и операции, прежде чем пробовать это.
>
>

**Логическое выражение** *(англ. Logic Statement)* — модовый нестабильный модуль. Содержит экран, который может показать различные логические выражения, а также две кнопки «T» и «F». При каждой активации модуля на таймере начинается отсчёт 90 секунд, а на экране высвечивается выражение, содержащее различные логические операции с аргументами. Для деактивации модуля необходимо определить, истинно или ложно отображаемое логическое выражение.

Модуль является умеренным по сложности для сапёра и, как правило, очень простым или даже тривиальным для эксперта: требует от сапера знания логических операций и таблиц истинности; эксперту же, по необходимости, нужно лишь напоминать саперу, что представляют собой те или иные операции. Не требует никакой информации о корпусе бомбы.

## Руководство

* Когда модуль активируется, на дисплее будет показано одно логическое уравнение. Вам нужно определить, возвращает ли оно **1** (истина, **True**) или **0** (ложь, **False**). Нажмите правильную кнопку, чтобы деактивировать модуль.
* Сначала определите, возвращает ли логический оператор в скобках **1** или **0** (подсказка: по некоторым логическим операциям, стоящим вне скобок, можно сразу понять, что они возвращают, даже не смотря на то, что скобках). Далее посмотрите на оператор вне скобок и дайте окончательный ответ.
* Также в данном модуле присутствует логическая операция «НЕ», которая называется логическим отрицанием (инверсией) — она означает, что для текущего байта **1** становится **0**, а **0** становится **1**. Например, ¬T = F, и наоборот, ¬F = T. Также логическое отрицание имеет наивысший приоритет среди логических операций.

### **Логические операции**

Список логических операций: И (AND), ИЛИ (OR), Исключающее ИЛИ (XOR), И-HE (NAND), ИЛИ-НЕ (NOR), Исключающее ИЛИ-НЕ (XNOR), Импликация (Implies/Implication Left), Обратная импликация (Implied by/Implication Right).

 **← (ImplicationRight)** | Возвращает **0**, только если первый аргумент равен **0**, а второй **1**(то есть если из **1** следует **0**, но в обратную сторону, справа налево).

## Советы по обезвреживанию

Решая данный модуль, вам обязательно нужны знания логических операций и таблиц истинности. Решая другие логические модули, вы в целом уже могли потренироваться со всем этим, и запомнить все операции.

Помните про то, что по некоторым определённым операциям, стоящим вне скобок, можно сразу понять, истинно или ложно всё логическое выражение целиком. К таким операциям относятся все, кроме «Исключающего ИЛИ» (XOR) и «Исключающего ИЛИ-НЕ» (XNOR), поскольку для данных операций необходимо определить значения обоих аргументов. Для всех остальных логических операций, зная значение одного определённого аргумента, можно сразу сказать, выведет ли всё выражение целиком **1** либо **0**.

* Например, если операция вне скобок — «**∧ (AND)**», и если аргумент вне скобок равен **0**, значит на скобки можно даже не смотреть — результат выражения будет равен **0**.
* Если операция вне скобок — «**∨ (OR)**», и если аргумент вне скобок равен **1**, значит результат выражения будет равен **1**.
* Если операция вне скобок — «**| (NAND)**», и если аргумент вне скобок равен **0**, значит результат выражения будет равен **1**.
* Если операция вне скобок — «**↓ (NOR)**», и если аргумент вне скобок равен **1**, значит результат выражения будет равен **0**.
* Если операция вне скобок — «**Импликация**», и если аргумент вне скобок, в который имплицирует операция (в который направлена стрелка) равен **1**, значит результат выражения будет равен **1**. Аналогично, если наоборот, операция имплицирует в выражение в скобках (то есть стрелка направлена в скобки), при этом аргумент вне скобок равен **0**, значит результат выражения также будет равен **1**.