3.
Тильда-омега-лямбда-исчисление
В случае наличия скобок нескольких типов всё становится чуть сложнее. Мы создаём стек, выполняющий роль той переменной balance. Это нужно, поскольку скобки не могут перекрываться. Проходя по строке и встречая открывающую скобку, мы кладём её в стек. Встречая закрывающую, мы пытаемся вынуть из стека открывающую скобку этого типа. Если на стеке лежит скобка другого типа, последовательность неправильная. Если в конце стек оказался непустым, последовательность также неправильная.
Тильда-омега-лямбда-исчисление - ещё более инновационная разработка "British Scientists, Inc" в сфере функционального программирования. Его отличие от омега-лямбда-исчисления только в возможности ставить квадратные и фигурные скобки. Планировались также скобки в форме слоников, но стандарт ЮНИКОД у компании изменить не получилось.
На вход подаётся тильда-омега-лямбда-выражение длиной не более 10^7 символов. Нужно вывести результат его тильда-иззи-редукции, работающей так же, как и иззи-редукция для омега-лямбда-выражений, но с учётом квадратных и фигурных скобок.
Напомним, иззи-редукция - одна из операций над такими выражениями. При её выполнении проверяется, является ли скобочная последовательность в выражении правильной. Термы при этом игнорируются. Если последовательность правильная - она превращается в терм gg, если нет - в терм wp.
Примеры
№ |
Входные данные |
Выходные данные |
1 |
main{izzy[lol](ttt)} |
gg |
Напишите программу
Auto