Задача 15: Разбор булева выражения

Напишите определение функции evaluateBooleanExpression(expression: str), которая принимает строку expression, представляющую булево выражение, и возвращает результат его вычисления (True или False).

Булево выражение — это выражение, которое оценивается как либо истина (true), либо ложь (false). Оно может иметь один из следующих видов:

  1. 't' — оценивается как истина (true).
  2. 'f' — оценивается как ложь (false).
  3. '!(subExpr)' — оценивается как логическое НЕ внутреннего выражения subExpr.
  4. '&(subExpr1, subExpr2, ..., subExprn)' — оценивается как логическое И (AND) внутренних выражений subExpr1, subExpr2, ..., subExprn, где n >= 1.
  5. |'(subExpr1, subExpr2, ..., subExprn)' — оценивается как логическое ИЛИ (OR) внутренних выражений subExpr1, subExpr2, ..., subExprn, где n >= 1.

Гарантируется, что входное выражение корректно и соответствует описанным правилам.


Примеры

Пример 1:

Входные данные:
expression = "&(|(f))"
Выходные данные:
false

Пояснение:

  1. Сначала вычисляется |(f)f. Выражение становится &(f).
  2. Затем вычисляется &(f)f. Выражение становится f.
  3. Результат: false.

Пример 2:

Входные данные:
expression = "|(f,f,f,t)"
Выходные данные:
true

Пояснение:
Логическое ИЛИ (OR) для f, f, f, t возвращает true.


Пример 3:

Входные данные:
expression = "!(&(f,t))"
Выходные данные:
true

Пояснение:

  1. Сначала вычисляется &(f,t)(false AND true)falsef. Выражение становится !(f).
  2. Затем вычисляется !(f)NOT falsetrue.
  3. Результат: true.

0

Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии