|
Булева алгебра
(Время: 1 сек. Память: 16 Мб Сложность: 52%)
В каждом языке программирования, даже самом простом, есть оператор ветвления, позволяющий проверить истинность логического выражения и, в зависимости от его результата, выполнить то или иное действие. Условие оператора ветвления представляет собой логическое (булевское) выражение, результатом которого может быть либо истина (TRUE), либо ложь (FALSE). Переменные, которые могут участвовать в логическом выражении, называются булевскими (boolean). Булевские переменные могут объединяться в сложные условия при помощи логических операций (функций):
- AND(x1,x2,.. xs). Операция «И», возвращает истинное значение, если все ее операнды истинны. (2 ≤ количество операндов ≤ s);
- OR(x1,x2,.. xs). Операция «ИЛИ», возвращает истинное значение, если хотя бы один ее операнд истинен. (2 ≤ количество операндов ≤ s);
- NOT(x1). Операция «НЕ», меняет значение операнда х1 на противоположное (операнд всегда один).
В логическом условии может использоваться несколько логических функций, вложенных друг в друга, то есть результат одной функции может использоваться другой в качестве операнда. Например, AND(A, B, OR(С,D)). Данное выражение будет истинно тогда, когда истинны А, B и (С или D).
Требуется написать программу, которая по имеющемуся логическому выражению и значению логических переменных определит результат выражения. Количество операндов у функций AND и OR всегда равно двум (s=2).
Входные данные
Первая строка входного файла INPUT.TXT содержит логическое выражение (длина не более 255 символов). Вторая строка содержит два числа, разделенных одним или несколькими пробелами: N – количество блоков (не более 10), K - количество переменных (не более 26). Далее следует N блоков, каждый имеет следующую структуру: состоит из K строк, каждая содержит выражение типа <переменная = значение>. Переменные задаются заглавными английскими буквами, значение – константами TRUE или FALSE (заглавные буквы).
Выходные данные
В выходной файл OUTPUT.TXT выведите N строк со значением результата логического выражения для переменных соответствующего блока.
Примеры
№ | INPUT.TXT | OUTPUT.TXT |
1 | AND(A,NOT(B))
1 2
A=FALSE
B=TRUE | FALSE |
2 | OR(NOT(AND(A,B)),A)
3 2
A=FALSE
B=TRUE
A=TRUE
B=TRUE
A=FALSE
B=FALSE | TRUE TRUE TRUE |
Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!
| |