Перетворювач TinyBF в Brainf ***


9

У нас є перетворювач Brainf *** в TinyBF, але не навпаки, ось ось такий.

Правила:

  • Ваш перекладач повинен прийняти дійсну програму TinyBF в одному рядку, і він повинен вивести відповідну програму BrainF ***, в одному рядку, з додатковим пробілом пробілів / новим рядком. Не допускається використання провідних пробілів
  • Вхід може містити або не містити символи, які не є жодним із чотирьох символів TinyBF. Якщо так, ви повинні надрукувати всі ці символи в одних і тих же місцях.
  • Відповідь буде прийнята 1 квітня (не жартую), виходячи з якихось незрозумілих критеріїв, які я буду використовувати (jk;) Я прийму найкоротшу програму, яка не обманює наступні правила)
  • Немає 0-байтових чи однобайтових рішень, тому що це руйнує задоволення, якщо ви створили (або є) мова програмування саме для цієї мети)

Випробування


Введення 1: +++++>+++++=>=|>>+=>>+|=>|>+=>+|(Обчислює 5 (байт 1) + 5 (байт 2) = 10 (байт 3))
Вихід 1:+++++>+++++<[>>+<<-]>[>+<-]

Введення 2: +++>++++Hi+++:P+=>=|>|>+>+=>>&&+|=>>|=>>=+!!>>=+|>>>+|(Обчислювачі 3 (байт 1) * 8 (байт 2) = 24 (байт 3)) Вихід 2:+++>++++Hi+++:P+<[>[>+>+<<&&-]>>[<<+!!>>-]<<<-]


Чи будуть коли-небудь команди вводу / виводу?
lirtosiast

Ні, тому що у TinyBF немає команд вводу-виводу.
HyperNeutrino

Це неправильно; ==є мозком ..
Денніс

Відповіді:


1

Python 2, 106 байт

a=0
r=''
for c in input():a=[a,~a][c=='='];r+={'+':'+-','>':'><','|':'[]'}.get(c,c)[a%-2]*(c!='=')
print r

Реалізує специфікацію TinyBF, яку можна знайти тут . Спробуйте в Інтернеті . Поліпшення було здійснено за допомогою прийомів відповіді @ Dica . Потрібен введення рядків з цитованими.


Це працює для всіх моїх тестових випадків! Хороша робота.
HyperNeutrino

Ви можете зберегти 5 байт за допомогою r+=b.get(c,c+c)[a]*(c!='='). Ви також можете зробити цикл for для циклу, щоб зберегти ще 3. Ви можете вбудувати дікт, щоб заощадити ще 4. Інлайнінг input()- це ще 4.
Морган Трапп

Крім того, вам потрібно або скористатися raw_inputPython 3, або перейти на нього за байт print. Зараз я отримую SyntaxError: invalid syntax.
Морган Трапп

@Mergo Я базував свою відповідь на вашій, але, мабуть, це нормально, оскільки модифікації важкі, дайте мені знати, якщо ви хочете, щоб я її видалив
Dica

@MorganThrapp Вхід цитується, тому він працює для 2. Прийняття введених рядків з цитованими дозволеними для мета-повідомлення, яке я зараз не можу знайти, оскільки я перебуваю на мобільному пристрої.
Мего

2

Python 3, 97 байт

Цей сценарій заснований на відповіді @ Mego

a=0
for c in input():a-=c=='=';print({'+':'+-','>':'><','|':'[]'}.get(c,c)[a%-2]*(c!='='),end='')

3
Я думаю, що це занадто схоже з відповіддю Мего і його слід було б запропонувати як оптимізацію в коментарі.
mbomb007

Хоча це і коротше, я прийняв відповідь Мего, тому що ваша відповідь занадто схожа на відповідь Мего, здається, оптимізація, а не чітка відповідь.
HyperNeutrino
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.