Tafsirkan DOGO
DOGO adalah bahasa pemrograman yang kurang dikenal. Sementara DOGO asli (bahasa lelucon dari pos Usenet) belum pernah diterapkan, bahasa yang menyerupai itu telah dibuat. Perintah untuk bahasa adalah:
+===========+================================================================+
| Command | Description |
+===========+================================================================+
| SIT | If the value of the current memory cell is 0, jump to STAY. |
+-----------+----------------------------------------------------------------+
| STAY | If the value of the current memory cell is not 0, jump to SIT. |
+-----------+----------------------------------------------------------------+
| ROLL-OVER | Select the next operation from the operation list. |
+-----------+----------------------------------------------------------------+
| HEEL | Execute the currently selected operation. |
+-----------+----------------------------------------------------------------+
Operasi adalah:
+========+=======================================================+====+
| Number | Description | BF |
+========+=======================================================+====+
| 0 | Increment current memory cell. | + |
+--------+-------------------------------------------------------+----+
| 1 | Decrement current memory cell. | - |
+--------+-------------------------------------------------------+----+
| 2 | Move to next memory cell. | > |
+--------+-------------------------------------------------------+----+
| 3 | Move to previous memory cell. | < |
+--------+-------------------------------------------------------+----+
| 4 | Input a byte and store it in the current memory cell. | , |
+--------+-------------------------------------------------------+----+
| 5 | Output the current memory cell as ASCII. | . |
+--------+-------------------------------------------------------+----+
Contohnya
Halo Dunia:
roll-over roll-over heel roll-over roll-over roll-over roll-over heel heel heel
heel heel heel heel heel heel sit roll-over roll-over roll-over heel roll-over
roll-over roll-over heel heel heel heel heel heel heel heel roll-over roll-over
heel roll-over roll-over roll-over roll-over roll-over heel roll-over roll-over
roll-over roll-over roll-over stay roll-over roll-over roll-over heel roll-over
roll-over heel roll-over roll-over roll-over heel roll-over roll-over roll-over
roll-over heel heel heel heel heel heel heel sit roll-over roll-over roll-over
heel roll-over roll-over roll-over heel heel heel heel roll-over roll-over heel
roll-over roll-over roll-over roll-over roll-over heel roll-over roll-over
roll-over roll-over roll-over stay roll-over roll-over roll-over heel roll-over
roll-over roll-over heel roll-over roll-over roll-over roll-over roll-over heel
roll-over heel heel heel heel heel heel heel roll-over roll-over roll-over
roll-over roll-over heel heel roll-over heel heel heel roll-over roll-over
roll-over roll-over roll-over heel roll-over roll-over roll-over heel heel heel
roll-over roll-over roll-over roll-over heel heel heel heel heel heel heel heel
sit roll-over roll-over roll-over heel roll-over roll-over roll-over heel heel
heel heel roll-over roll-over heel roll-over roll-over roll-over roll-over
roll-over heel roll-over roll-over roll-over roll-over roll-over stay roll-over
roll-over roll-over heel roll-over roll-over heel roll-over roll-over roll-over
heel heel heel roll-over roll-over roll-over roll-over heel heel heel heel heel
heel heel heel heel heel sit roll-over roll-over roll-over heel roll-over
roll-over roll-over heel heel heel heel heel heel heel heel heel roll-over
roll-over heel roll-over roll-over roll-over roll-over roll-over heel roll-over
roll-over roll-over roll-over roll-over stay roll-over roll-over roll-over heel
roll-over roll-over roll-over roll-over heel heel heel roll-over roll-over
roll-over roll-over heel roll-over roll-over roll-over roll-over heel heel heel
heel roll-over roll-over heel roll-over heel heel heel roll-over roll-over
roll-over roll-over roll-over heel roll-over roll-over heel heel heel heel heel
heel roll-over roll-over roll-over roll-over heel roll-over roll-over heel heel
heel heel heel heel heel heel roll-over roll-over roll-over roll-over heel
roll-over roll-over roll-over heel heel roll-over roll-over roll-over roll-over
heel roll-over roll-over roll-over roll-over roll-over heel
Aturan
- Setiap pengiriman harus berupa program atau fungsi lengkap. Jika itu adalah fungsi, itu harus bisa dijalankan dengan hanya perlu menambahkan panggilan fungsi ke bagian bawah program. Hal lain (mis. Tajuk dalam C), harus dimasukkan.
- Jika memungkinkan, berikan tautan ke situs online tempat kode Anda dapat diuji.
- Program Anda tidak dapat menulis apa pun untuk
STDERR
(atau yang serupa). - Anda dapat mengambil input dari
STDIN
(atau alternatif terdekat dalam bahasa Anda), atau sebagai argumen. - Celah standar dilarang.
Mencetak gol
Program diberi skor berdasarkan byte . Set karakter default adalah UTF-8, jika Anda menggunakan yang berbeda, silakan tentukan.
Selain itu, ini adalah kode-golf , dan jumlah byte terendah akan dianggap sebagai pemenang!
Pengajuan
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
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
# Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Papan peringkat
Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa.
Memperbarui:
Maaf karena tidak mengklarifikasi sit
dan stay
memerintahkan dengan sangat baik. Yaitu, seperti yang dikatakan @ user6245072, sukai [
dan ]
di BF.
Pembaruan 2:
Untuk mengklarifikasi pertanyaan @ KennyLau:
- Operasi standarnya adalah
0
. - Memori terdiri dari sel 8-bit.
- Sel membungkus overflow / underflow.
- Input diperlukan untuk operasi 4.
sumber
sit lie-down roll-over play-dead heel
1
mengatakan "increment next cell`, tetapi kode BF yang sesuai adalah" decrement current cell ". Yang mana perilaku yang benar?Jawaban:
Ruby, 287 byte
Berjalan pada pita tanpa batas di kedua arah. Input DOGO adalah file di baris perintah. Jika tidak ada argumen baris perintah, program DOGO akan tetap berfungsi jika dilewatkan sebagai STDIN, kecuali jika menggunakan operasi
3
(dapatkan byte dari STDIN) dalam hal ini saya tidak tahu. Bagaimanapun, input file adalah yang terbaik.Diasumsikan tidak ada teks selain dari empat perintah dan spasi putih yang ada di file program.
Halo Demonstrasi Dunia
sumber
Python 3,
388398373371 byteDiasumsikan 256 sel memori. Hanya dengan implementasi yang mudah, mudah dikalahkan, mungkin bisa bermain golf lebih banyak. Cobalah repl.it .
Terima kasih kepada @EasterlyIrk karena membuat saya menyadari bahwa Python 3 jauh lebih pendek daripada Python 2.
EDIT: Sadar Saya hanya memperhitungkan over / underflow saat mencetak, bukan pada nilai sebenarnya.
Terima kasih kepada @ KevinLau-notKenney karena telah menghemat 25 (!) Byte dengan daftar multiplikasi dan trik operator inversi
EDIT: -3 byte dengan menempatkan 256 ke dalam variabel, -4 mengotak-atik operator, +8 memastikan huruf kecil
sumber
sys.stdout.write
? Mengapa tidakprint
?print(...,end='')