Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 

Булева алгебра - 2

(Время: 1 сек. Память: 16 Мб Сложность: 57%)

В каждом языке программирования, даже самом простом, есть оператор ветвления, позволяющий проверить истинность логического выражения и, в зависимости от его результата, выполнить то или иное действие. Условие оператора ветвления представляет собой логическое (булевское) выражение, результатом которого может быть либо истина (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 может быть любым (2 ≤ s ≤ 26).

Входные данные

Первая строка входного файла INPUT.TXT содержит логическое выражение (длина не более 255 символов). Вторая строка содержит два числа, разделенных одним или несколькими пробелами: N – количество блоков (не более 10), K - количество переменных (не более 26). Далее следует N блоков, каждый имеет следующую структуру: состоит из K строк, каждая содержит выражение типа <переменная = значение>. Переменные задаются заглавными английскими буквами, значение – константами TRUE или FALSE (заглавные буквы).

Выходные данные

В выходной файл OUTPUT.TXT выведите N строк со значением результата логического выражения для переменных соответствующего блока.

Примеры

INPUT.TXTOUTPUT.TXT
1AND(A,NOT(B))
1 2
A=FALSE
B=TRUE
FALSE
2OR(NOT(AND(A,B)),A)
3 2
A=FALSE
B=TRUE
A=TRUE
B=TRUE
A=FALSE
B=FALSE
TRUE
TRUE
TRUE

Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!

[Обсуждение] [Все попытки] [Лучшие попытки]

Красноярский краевой Дворец пионеров, (c)2006 - 2018, ICQ: 151483, E-mail: admin@acmp.ru