Tantangan Anda adalah mengubah input teks ke kode brain-flak yang akan menampilkan teks.
Tutorial diambil dari sini dengan izin di sini
Brain-Flak memiliki dua tumpukan, yang dikenal sebagai 'kiri' dan 'kanan'. Tumpukan aktif dimulai dari kiri. Jika tumpukan kosong muncul, itu akan mengembalikan 0. Itu saja. Tidak ada variabel lain. Ketika program dimulai, setiap argumen baris perintah didorong ke tumpukan aktif.
Satu-satunya karakter yang valid dalam program Brain-Flak adalah ()[]{}<>
, dan mereka harus selalu seimbang. Ada dua jenis fungsi: Nilads dan monad . Sebuah nilad adalah fungsi yang mengambil 0 argumen. Ini semua nilad:
()
Mengevaluasi satu.[]
Mengevaluasi ketinggian tumpukan saat ini.{}
Pop stack aktif. Mengevaluasi nilai yang muncul.<>
Alihkan tumpukan aktif. Mengevaluasi ke nol.
Ini digabungkan bersama ketika mereka dievaluasi. Jadi jika kami memiliki '3' di atas tumpukan aktif, cuplikan ini:
()(){}
akan mengevaluasi 1 + 1 + active.pop()
yang akan mengevaluasi ke 5.
Monad mengambil satu argumen, sepotong kode Brain-Flak. Ini semua monad:
(n)
Tekan 'n' pada tumpukan aktif.[n]
Mengevaluasi ke negatif 'n'{foo}
Meskipun nol tidak ada di atas tumpukan, lakukan foo.<foo>
Jalankan foo, tetapi evaluasilah sebagai 0.
Fungsi-fungsi ini juga akan mengembalikan nilai di dalamnya, jadi
(()()())
Akan mendorong 3 tetapi
((()()()))
Akan mendorong 3 dua kali .
The {}
akan mengevaluasi untuk jumlah semua berjalan. Jadi jika kita memiliki '3' dan '4' di bagian atas tumpukan:
{{}}
akan dievaluasi sebagai 7.
Ketika program selesai dieksekusi, setiap nilai yang tersisa di tumpukan aktif dicetak, dengan baris baru di antaranya. Nilai pada tumpukan lainnya diabaikan.
Aturan
- Anda dapat mengasumsikan bahwa Brain-Flak dijalankan dengan ascii. (
-A
) - Kode brain-flak TIDAK harus memerlukan input
- Semua aturan standar berlaku
- Kode harus dijalankan dalam 1 menit untuk setiap input hingga 1024 byte pada TIO. (Jika tidak ada output TIO tersedia, berikan juru bahasa dan saya akan menjalankannya di mesin saya (mesin saya seharusnya bisa mendekati TIO)).
- Anda harus mendukung input panjang yang berubah-ubah.
- Anda dapat mengambil input dari file.
- Optimalisasi untuk uji kasus tidak diperbolehkan
- Output deterministik diperlukan
- Program tidak perlu stack clean
Uji kasus (coba kode Anda pada ini, teks skor aktual akan dirilis dalam 1-2 minggu setelah tantangan diposting)
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
The meaning of brain-flak is to flak your brain with pain.
`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?
To be, or not to be, that is the question:
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
Or to take arms against a sea of troubles
And by opposing end them. To die-to sleep,
No more; and by a sleep to say we die
<your brain-flak code here>
The fitness pacer test is a multi stage test. Avacado Avacado Avacadad Avacadad carrot.bat carrot.jar carrot.carrot Quack Quack Quack Quack Quack Quack Quack Quack Quack downgoat doawngoat down down gaot
This challenge came from a online program that turned text into brain-fuck. However brain-fuck has limitations and it is not nearly as cool as brain-flak. I really am looking forward to cool programs :) I am glad you took the time to read this and look forward to seeing your answer.
Kemenangan
Untuk menang, Anda harus memberikan total panjang kode kritik otak yang diberikan oleh masing-masing kasus uji yang akan dirilis 1-2 minggu setelah tanggal posting. Total panjang terpendek menang.
CATATAN!!!!!!:
Ini bukan kode-golf , panjang kode Anda tidak akan mempengaruhi skor akhir Anda dengan cara apa pun. Membuat kode yang mudah dibaca bersih dihargai. Terima kasih!
Uji kasus
sumber
<your brain-flak code here>
bawah 1000 diberikan hadiah. Yang saya tidak dapat memposting untuk hari lain, whoops; tidak menyadari betapa baru ini.Jawaban:
Brain-Flak , 130 byte
Cobalah online!
Output untuk
<your brain-flak code here>
: 5045 byteCobalah online!
sumber
Python 3 , 17744 byte
Sunting: Saya telah menambahkan beberapa opsi untuk membantu golf dalam situasi yang aman.
Cobalah online!
Sebuah
sederhanasolusi rekursif yang saya akan terus meningkatkan lebih lanjut. Ini sangat baik dengan input yang lebih kecil, tetapi kalah dari jawaban Ruby MegaTom untuk input yang lebih lama.Catatan:
[]
menjadi tidak berguna (meskipun mereka dapat dinonaktifkan dengan mengomentari beberapa baris, dan mereka hanya memperbaikinyasekitar 100 bytecukup sedikit).Karena ini adalah algoritma rekursif, itu akan memakan waktu lebih lama untuk karakter dengan nilai besar. Misalnya, karakter ÿ (nilai 255) membutuhkan 9 detik untuk mengevaluasi, di mana setiap uji sekaligus membutuhkan 1,6 detik.Cache diimplementasikan![]
)-
. Ini memotong beberapa byte, dan banyak waktu yang diberikan nilai dasbor em adalah 8212: o.Output contoh:
<your brain-flak code here>
(312 byte):Cobalah online!
Hello, World!
( 142 byte [Catatan: Terbaik sebelumnyasaat iniadalah 148 byte , dan sekarang 136 byte]):Cobalah online!
sumber
Ruby , 17398 byte untuk semua kasus uji (baru)
Cobalah online!
<your brain-flak code here>
,362358 byteCobalah online!
sumber
Must run under 1 minute for inputs up to 1024 bytes
aturan (meskipun jauh lebih cepat sekarang)cache
, tidakcash
; pPython 3 , 16222 byte
Cobalah online!
Pertama di bawah 1000 untuk
<your brain-flak code here>
: DBrain-Flak , 448 byte
Cobalah online!
(awalnya 827 untuk
<your brain-flak code here>
)sumber
05AB1E , terlalu banyak byte (BF apa pun pertama saya)
Cobalah online!
Upaya yang sangat mendasar dalam bermain golf menggunakan kode "otak multiplikasi" premade. Yang dilakukan adalah menemukan pasangan pembagi dengan jumlah terkecil untuk setiap titik kode ASCII, lalu mendorong kedua pasangan pembagi tersebut sebagai angka. Kode Brainflak
({}<>)({<({}[()])><>({})<>}{}<><{}>)
kemudian ditambahkan dan dieksekusi dalam satu lingkaran sampai semua nilai berada di tumpukan alternatif.Daftar orang yang saya ucapkan terima kasih:
(()())(()()())
=((()())())
(-252 bytes
)-927 bytes
).Contoh golf
<your brain-flak code here>
dengan347032182291 byte:Brain-Flak , 2291 byte
Cobalah online!
Setiap baris mewakili satu karakter yang sedang golf, ini mengalahkan solusi dasar saya diposting oleh 60% , dan pergi untuk mengetahui apa-apa tentang Brainflak saya merasa ini adalah dasar yang baik dari apa yang tidak boleh dilakukan. Saya akan memberi jawaban dalam beberapa saat, di tengah-tengah hal lain dan saya yakin saya bisa memperbaiki ini. (Saya memasukkan baris baru dalam byte-count karena saya tidak berharap ini menang).
sumber
(()()()())(()()()()())
dan((()()()())())
2) Perkalian dengan konstanta bisa lebih pendek daripush(); multiply();
. Misalnya, untuk menggandakan angka, Anda bisa melakukannya(({}){})
daripada(()())({}<>)({<({}[()])><>({})<>}{}<><{}>)
. Tapi ini bukan garis dasar yang mengerikan. Jika Anda ingin lebih banyak input, saya selalu senang mengobrol di tumpukan ketigaBrain-Flak
Cobalah online!
Output untuk
<your brain-flak code here>
, 582 byte:sumber