Tantangan ini diposting sebagai bagian dari tantangan LotM April 2018
Brain-Flak adalah bahasa turing-tarpit yang telah mendapatkan cukup banyak ketenaran di PPCG. Memori bahasa ini disusun oleh dua tumpukan, tetapi tumpukan ketiga "tersembunyi" ditemukan oleh Wh e di Wizard , yang mengarah ke beberapa cara baru yang menarik untuk memikirkan program Brain-Flak.
Jadi, bagaimana dengan memberikan tumpukan ketiga tersembunyi yang miskin lebih banyak visibilitas? Mari kita membuat bahasa di mana tumpukan ketiga memiliki pengakuan yang layak! Di sini saya hadir Anda Third-Flak .
Bahasa
Di Third-Flak hanya ada satu tumpukan, disebut tumpukan ketiga. Operator bekerja di tumpukan ketiga dengan cara yang sama mereka lakukan di Brain-Flak, tapi di sini tidak ada []
, {}
, <>
nilads dan tidak ada {...}
monad (sehingga karakter hanya diterima dalam program Ketiga-Flak adalah ()[]<>
). Inilah yang dilakukan oleh setiap operator (contoh akan diberikan mewakili tumpukan ketiga dengan daftar di mana elemen terakhir adalah bagian atas tumpukan):
()
adalah satu-satunya operator dua karakter di Third-Flak. Ini meningkatkan bagian atas tumpukan ketiga dengan 1. Contoh:[1,2,3]
→[1,2,4]
(
,[
,<
: Semua kurung pembuka yang tidak tercakup oleh kasus sebelumnya mendorong0
ke tumpukan ketiga. Contoh:[1,2,3]
→[1,2,3,0]
)
muncul dua elemen dari tumpukan ketiga dan mendorong kembali jumlah mereka. Contoh:[1,2,3]
→[1,5]
]
muncul dua elemen dari tumpukan ketiga dan mendorong kembali hasil pengurangan yang pertama dari yang kedua. Contoh:[1,2,3]
→[1,-1]
>
muncul elemen dari tumpukan ketiga. Contoh[1,2,3]
→[1,2]
Dan berikut ini adalah aturan bahasa lainnya:
Pada awal eksekusi, tumpukan ketiga hanya berisi 0 tunggal.
Dilarang memiliki bagian yang kosong
[]
atau<>
di dalam suatu program (mereka toh akan menjadi noops jika mengikuti semantik Flak Ketiga, tetapi mereka sebenarnya memiliki arti yang berbeda dalam Brain-Flak yang tidak mungkin dibuat ulang di sini).Tanda kurung harus selalu seimbang, kecuali fakta bahwa tanda kurung penutup di akhir program bisa hilang. Sebagai contoh,
[()<(()
adalah program Third-Flak yang valid (dan stack ketiga di akhir program adalah[1,0,1]
).Suatu program hanya dapat berisi enam karakter yang diizinkan
()[]<>
. Program dijamin tidak kosong.
Catatan: ini tersirat oleh aturan sebelumnya bahwa Anda tidak perlu berurusan dengan situasi di mana Anda harus keluar dari tumpukan kosong.
Tantangan
Sederhana, tulis penerjemah untuk Third-Flak. Program Anda harus mengambil sebagai input program Third-Flak dan kembali sebagai keluaran status tumpukan ketiga di akhir program.
Format output Anda fleksibel selama dimungkinkan untuk secara jelas membaca dari situ tumpukan ketiga dan angka yang sama selalu dikodekan dengan cara yang sama (Ini hanya cara untuk mengatakan bahwa format output apa pun yang bukan cara yang terang-terangan) untuk mencoba curang tidak masalah).
Pilihan output Anda dapat membatasi rentang angka yang dapat Anda kelola selama ini tidak meremehkan tantangan (karena ini akan menjadi celah default ).
Uji kasus
Untuk setiap kasus uji, baris pertama adalah input, dan baris kedua tumpukan output diwakili sebagai daftar angka yang dipisahkan dengan spasi di mana bagian atas tumpukan adalah elemen terakhir.
[()<(()
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
ada di sini .
[()]
langgar aturan bahwa kita tidak perlu khawatir muncul dari tumpukan kosong