Ваша задача состоит в том, чтобы превратить вводимый текст в код, который будет выводить текст.
Учебник взят здесь с разрешения здесь
Brain-Flak имеет два стека, известные как «левый» и «правый». Активный стек начинается слева. Если выгрузится пустой стек, он вернет 0. Вот и все. Других переменных нет. Когда программа запускается, каждый аргумент командной строки помещается в активный стек.
Единственными действительными символами в программе Brain-Flak являются ()[]{}<>
, и они всегда должны быть сбалансированы. Есть два типа функций: Nilads и монады . Nilad это функция , которая принимает 0 аргументов. Вот все нилады:
()
Оценивает до одного.[]
Оценивает высоту текущего стека.{}
Поп активный стек. Оценивает до совпавшего значения.<>
Переключить активный стек. Оценивает до нуля.
Они объединяются вместе, когда они оцениваются. Так что, если у нас есть «3» поверх активного стека, этот фрагмент:
()(){}
оценил бы, 1 + 1 + active.pop()
что оценил бы до 5.
Монады берут один аргумент - кусок кода Brain-Flak. Вот все монады:
(n)
Нажмите 'n' в активном стеке.[n]
Оценивается как отрицательное 'n'{foo}
Пока ноль не на вершине стека, сделайте foo.<foo>
Выполните foo, но оцените его как 0.
Эти функции также будут возвращать значение внутри них, поэтому
(()()())
Будет толкать 3 но
((()()()))
Буду нажимать 3 раза .
{}
Будет оценивать на сумму всех прогонов. Так что, если бы у нас было 3 и 4 на вершине стека:
{{}}
оценил бы как 7.
Когда выполнение программы завершено, каждое значение, оставленное в активном стеке, печатается с новой строкой между. Значения в другом стеке игнорируются.
правила
- Вы можете предположить, что Brain-Flak запускается с ascii out. (
-A
) - Мозговой код не должен требовать ввода
- Все стандартные правила применяются
- Код должен выполняться в течение 1 минуты для любого ввода до 1024 байтов на TIO. (Если нет выхода TIO, предоставьте переводчика, и я запусту его на моей машине (моя машина должна быть в состоянии приблизиться к TIO)).
- Вы должны поддерживать произвольную длину ввода.
- Вы можете взять входные данные из файла.
- Оптимизация для тестовых случаев не допускается
- Требуется детерминированный вывод
- Программы не должны быть чистыми в стеке
Контрольные примеры (попробуйте свой код на них, фактические тексты оценки будут опубликованы через 1-2 недели после публикации заявки)
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
The meaning of brain-flak is to flak your brain with pain.
`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?
To be, or not to be, that is the question:
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
Or to take arms against a sea of troubles
And by opposing end them. To die-to sleep,
No more; and by a sleep to say we die
<your brain-flak code here>
The fitness pacer test is a multi stage test. Avacado Avacado Avacadad Avacadad carrot.bat carrot.jar carrot.carrot Quack Quack Quack Quack Quack Quack Quack Quack Quack downgoat doawngoat down down gaot
This challenge came from a online program that turned text into brain-fuck. However brain-fuck has limitations and it is not nearly as cool as brain-flak. I really am looking forward to cool programs :) I am glad you took the time to read this and look forward to seeing your answer.
выигрыш
Чтобы выиграть, вы должны указать общую длину кода «мозгового штурма» для каждого из тестовых случаев, который будет опубликован через 1-2 недели после даты публикации. Наименьшая общая длина выигрывает.
НОТА!!!!!!:
Это не код-гольф , длина вашего кода никак не повлияет на ваш окончательный счет. Создание чистого читаемого кода приветствуется. Благодарность!
Контрольные примеры
<your brain-flak code here>
меньше 1000, присуждается за вознаграждение. Который я не могу отправить на другой день, упс; не заметил, как это было ново.