Цей виклик було розміщено як частина виклику LotM у квітні 2018 року
Brain-Flak - це виразно-бляшана мова, яка здобула досить велику популярність тут на PPCG. Пам'ять про мову складається з двох стеків, а «прихований» третій стек був виявлений на Wh е в майстра , що призводить до деяких цікавих нових способів мислення програми Brain-зенітної.
Отже, а як надати цій бідній прихованій третій стек більшу видимість? Давайте створимо мову там, де третій стек має визнання, яке заслуговує! Тут я представляю вам Третього Флака .
Мова
У Третього Флака є лише один стек, який називається третім стеком. Оператори працюють на третьому стек таким же чином , що вони роблять в Брейн-Flak, але тут немає []
, {}
, <>
nilads і не {...}
монади (так тільки допустимі символи в програмі третього Flak є ()[]<>
). Ось що робить кожен оператор (наведено приклади, що представляють третій стек зі списком, де останній елемент є верхом стека):
()
є єдиним оператором з двох символів у Third-Flak. Це збільшує верхню частину третього стеку на 1. Приклад:[1,2,3]
→[1,2,4]
(
,[
,<
: Все відкриття дужки, що не охоплені в попередньому випадку натиснути0
на третій стек. Приклад:[1,2,3]
→[1,2,3,0]
)
вискакує два елементи з третього стеку і відштовхує їх суму. Приклад:[1,2,3]
→[1,5]
]
вискакує два елементи з третього стека і відштовхує результат віднімання першого з другого. Приклад:[1,2,3]
→[1,-1]
>
спливає елемент з третього стеку. Приклад[1,2,3]
→[1,2]
Ось інші правила мови:
На початку виконання третій стек містить лише один 0.
Забороняється мати порожню
[]
або<>
всередині програми (вони все одно були би шумими, якщо слідувати семантиці Третього Флака, але вони насправді мають інше значення в «Мозговому-Флаку», яке тут неможливо відтворити).Дужки завжди потрібно збалансувати, за винятком того, що кінцеві дужки в кінці програми можуть бути відсутніми. Як приклад,
[()<(()
є дійсна програма Third-Flak (і третій стек в кінці програми буде[1,0,1]
).Програма може містити лише шість дозволених символів
()[]<>
. Програми гарантовано не пустують.
Примітка: з попередніх правил мається на увазі, що вам не доведеться стикатися з ситуаціями, коли потрібно вискакувати з порожнього стека.
Змагання
Простий, написати перекладача для Third-Flak. Ваша програма повинна прийняти за вхід програму Third-Flak і повернути як вихід стан третього стеку в кінці програми.
Ваш вихідний формат є гнучким, доки можна однозначно прочитати з нього стан третього стеку, і те саме число завжди кодується однаково (Це лише спосіб сказати, що будь-який формат виводу, який не є кричущим способом намагатися обдурити - це добре).
Ваш вибір виходу може обмежувати діапазон чисел, якими ви можете керувати, доки це не призведе до тривоги виклику (оскільки це буде лазівка за замовчуванням ).
Тестові справи
Для кожного тестового випадку перший рядок є вхідним, а другий рядок вихідним стеком представлений у вигляді розділеного пробілом списку чисел, де верхня частина стека є останнім елементом.
[()<(()
0 1 0 1
[((((()()()()()))
0 0 0 5
((([()][()][()])))
-3
[<<(((()()()())(((((
0 0 0 0 0 4 0 0 0 0 0
[()]<(([()])><[()]
-1 0 -1
(())(()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(()()()()())(())(())(())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(()()()()())(())(())(())(())(())(())(()())(())(())(())(()())(()()()())(())(()()()()())(()())(()())(()())(()()())(())(()())(())(()()()()())(()())(()()()()())(())(())(())(())(())(()())(())(())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(()())(()())(()())(()())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(()()())(()())(())(()()()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(())(())(())(()()())(())(())(()()())(())(())(()()())(())(()()()()())(()())(()()()()())(()()())(())(()()())(())(())(())(()())(()()())(()())(())(()()()()())(()())(())(()()())(())(()()()()())(())(())(())(()()())(())(())(())(()())(())(()())(()()()())(())(())(()()()()())(()())(()())(())(()()())(())(())(())(())(()()())(()())(())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()())(())(()()()()())(()()()()())(())(()()())(())(())(()())(())(()()()()())(())(()()()()())(())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(()()()()())(())(()()()()())(())(())(())(()())(())(()()()()())(())(())(()())(())(()())(())(()())(()())(()())(()())(())(()()()()())(()())(())(()()()()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(())(()()())(())(())(())(()())(()()()())(())(())(()())(())(()()()()())(())(())(()()()()())(())(())(()()()()())(())(())(()())(())(()())(())(()())(())(()())(())(()())(()())(()())(()())(()())(()())(())(()()())(())(())(()())(())(()()()()())(()())(()()()()())(()()())(())(())(()())(())(())(()()()()())(()()()())(()())(()())(()()())(())(()())(())(()()()()())(()())(()()()()())(())(())(())(()()()())(()()()())(()()
718 2
e
знаходиться тут .
[()]
порушено правило, що нам не потрібно турбуватися про вискакування з порожнього стека