Tulis penerjemah untuk 2B
Saya suka bahasa esoterik David Catt 2B, memiliki memori yang disimpan dalam rekaman di mana setiap sel adalah kaset byte yang terpisah ('subtape'). Tulis penerjemah untuk itu!
Spesifikasi Bahasa
Spesifikasi resmi dapat ditemukan di sini . Dalam spesifikasi ini, "
berarti angka dalam kisaran 0-9
( 0
ditafsirkan sebagai 10
), dan _
berarti string dengan panjang berapa pun. Setiap sel menyimpan nilai dalam kisaran 0-255
, dan overflow / underflow membungkus seperti halnya BF. (Terima kasih @ MartinBĂĽttner). Untuk mengonversi teks menjadi angka 0-255
, gunakan kode ASCII . Karena saya tidak dapat menemukan detail tentang ini, saya akan mengatakan bahwa panjang rekaman harus 255
minimum, tetapi jika Anda tahu sebaliknya, silakan edit.
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
| Instruction | Description |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
| 0 | Zeroes the current cell and clears the overflow/underflow flag. |
| { | If the current cell is zero, jump to the matching }. |
| } | A placeholder for the { instruction. |
| ( | Read a byte from the input stream and place it in the current cell. |
| ) | Write the value of the current cell to the console. |
| x | Store the value of the current cell in a temporary register. |
| o | Write the value of the temporary register to the console. |
| ! | If the last addition overflowed, add one to the current cell. If the last subtraction underflowed, subtract one from the current cell. |
| ? | Performs a binary NOT on the current cell. |
| +" | Adds an amount to the current cell. |
| -" | Subtracts an amount from the current cell. |
| ^" | Moves the subtape up a number of times. |
| V" | Moves the subtape down a number of times. |
| <" | Moves the tape left a number of times. |
| >" | Moves the tape right a number of times. |
| :_: | Defines a label of name _. |
| *_* | Jumps to a label of name _. |
| ~_~ | Defines a function of name _. |
| @_@ | Calls a function of name _. |
| % | Ends a function definition. |
| #_# | Is a comment. |
| [SPACE] | Is an NOP. |
| [NEWLINE] | Is treated as whitespace and removed. |
| [TAB] | Is treated as whitespace and removed. |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------+
Tes
+0+0+0+0+0+0+0+2)+0+0+9)+7))+3)-0-0-0-0-0-0-0-9)+0+0+0+0+0+0+0+0+7)-8)+3)-6)-8)-7-0-0-0-0-0-0)
Haruskah output Hello world!
+1:i:{()*i*}
Semacam cat
program, hanya tanpa baris baru.
+1:loop:{@ReadChar@*loop*}@PrintHello@@WriteAll@(~ReadChar~(x-0-3<2o^1>1+1>1%~PrintHello~+0+0+0+0+0+0+0+2)-1+0+0+0)+7))+3)+1-0-0-0-0-0-0-0-0)%~WriteAll~<1x:reverse:{<1v1>1-1*reverse*}o-1:print:{-1<1)^1>1*print*}%
Pertama-tama harus menerima nama, kemudian, pada tekan Return, harus menampilkan Hello name
(di mana nama adalah apa yang dimasukkan).
Penghargaan untuk program itu diberikan kepada David Catt .
Saya sedang mengerjakan program tes penuh.
Aturan
- Celah standar dilarang
- Penerjemah Anda harus memenuhi semua spesifikasi, kecuali untuk komentar, yang tidak diperlukan.
Mencetak gol
- Ini kode-golf , byte paling sedikit menang!
- -10 byte jika penerjemah Anda menangani komentar.
Papan peringkat
Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
# Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes