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.