Konverter TinyBF ke Brainf ***


9

Kami memiliki konverter Brainf *** ke TinyBF, tetapi tidak sebaliknya, jadi inilah salah satunya.

Aturan:

  • Penerjemah Anda harus mengambil program TinyBF yang valid, pada satu baris, dan itu harus menampilkan program BrainF *** yang sesuai, pada satu baris, dengan spasi / baris baru trailing opsional. Tidak ada spasi putih terkemuka dibolehkan
  • Input mungkin atau mungkin tidak mengandung karakter yang bukan salah satu dari empat karakter TinyBF. Jika demikian, Anda harus mencetak semua karakter ini di tempat yang sama.
  • Jawaban akan diterima pada 1 April (tidak bercanda), berdasarkan beberapa kriteria tidak jelas yang akan saya gunakan (jk;) Saya akan menerima program terpendek yang tidak curang oleh aturan berikut ini)
  • Tidak ada solusi 0-byte atau 1-byte, karena itu merusak kesenangan jika Anda membuat (atau ada) bahasa pemrograman hanya untuk tujuan ini)

Uji Kasus


Input 1: +++++>+++++=>=|>>+=>>+|=>|>+=>+|(Menghitung 5 (byte 1) + 5 (byte 2) = 10 (byte 3))
Output 1:+++++>+++++<[>>+<<-]>[>+<-]

Input 2: +++>++++Hi+++:P+=>=|>|>+>+=>>&&+|=>>|=>>=+!!>>=+|>>>+|(Menghitung 3 (byte 1) * 8 (byte 2) = 24 (byte 3)) Output 2:+++>++++Hi+++:P+<[>[>+>+<<&&-]>>[<<+!!>>-]<<<-]


Apakah akan ada perintah I / O?
— lirtosiast

Tidak, karena TinyBF tidak memiliki perintah IO.
— HyperNeutrino

Itu tidak benar; ==adalah brainfuck's ..
— Dennis

Jawaban:


1

Python 2, 106 byte

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

Menerapkan spesifikasi TinyBF seperti yang ditemukan di sini . Cobalah online . Perbaikan dilakukan menggunakan teknik dari jawaban @ Dica . Membutuhkan input string yang dikutip.


Ini bekerja untuk semua kasus pengujian saya! Kerja bagus.
— HyperNeutrino

Anda dapat menyimpan 5 byte dengan r+=b.get(c,c+c)[a]*(c!='='). Anda juga dapat membuat for loop satu baris untuk menghemat 3 lagi. Anda dapat memasukkan dict untuk menyimpan lebih banyak. Inlining input()adalah 4. lainnya
— Morgan Thrapp

Juga, Anda harus menggunakan raw_inputatau beralih ke Python 3 dan mengambil hukuman byte print. Sekarang saya mengerti SyntaxError: invalid syntax.
— Morgan Thrapp

@Mergo Saya mendasarkan jawaban saya pada Anda tetapi saya kira tidak apa-apa karena modifikasinya berat, beri tahu saya jika Anda ingin saya menghapusnya
— Dica

@MorganThrapp Masukan tersebut dikutip, jadi berfungsi untuk 2. Mengambil input string yang dikutip diperbolehkan per posting meta yang saya tidak dapat menemukan sekarang karena saya sedang di ponsel.
— Mego

2

Python 3, 97 byte

Skrip ini didasarkan pada jawaban @ Mego

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

3
Saya pikir ini terlalu mirip dengan jawaban Mego dan seharusnya disarankan sebagai pengoptimalan dalam komentar.
— mbomb007

Meskipun ini lebih pendek, saya menerima jawaban Mego karena jawaban Anda terlalu mirip dengan Mego dan sepertinya merupakan pengoptimalan daripada jawaban yang berbeda.
— HyperNeutrino
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.