Joe adalah pengembang BF rata-rata Anda. Dia akan memeriksa perubahan kodenya ke repositori mereka ketika dia mendapat telepon dari bosnya. "Joe! Mesin klien baru rusak! Penerjemah brainfuck mengatur semua sel ke nilai acak sebelum eksekusi program. Tidak ada waktu untuk memperbaikinya, kode Anda harus menghadapinya." Joe tidak terlalu memikirkannya, dan akan menulis sebuah program untuk mengatur juta sel pertama menjadi nol, ketika bosnya memotongnya lagi - "... dan jangan berpikir tentang menggunakan brute force, kodenya harus sekecil mungkin. " Sekarang Anda harus membantu Joe yang malang!
Spesifikasi
- Anda akan mendapatkan beberapa kode brainfuck yang valid sebagai input
- Program Anda kemudian akan memodifikasi kode sehingga harus bekerja pada penerjemah brainfuck acak
- Ini berarti bahwa sebelum eksekusi program, sel-sel dapat diatur ke nilai apa pun.
- Program baru harus memiliki perilaku yang sama persis terlepas dari kondisi awal.
- Interpreter akan memiliki nilai sel maksimum 255 dengan pembungkus, dan pita panjang tak terbatas.
Mencetak gol
Skor Anda adalah 10 kali ukuran kompilator dalam byte plus jumlah ukuran test case . Skor terendah jelas menang. Untuk memitigasi terhadap optimalisasi kasus uji, saya berhak mengubah kasus uji sekitar jika saya mencurigai sesuatu, dan mungkin akan melakukannya sebelum memilih pemenang.
Uji Kasus
(Saya mendapatkan ini dari halaman esolangs dan halaman web ini: http://www.hevanet.com/cristofd/brainfuck/ ). Juga terima kasih kepada @Sparr untuk test case terakhir.
- Halo Dunia:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
- Masukan terbalik:
>,[>,]<[.<]
- Powers of Two (Infinite Stream):
>++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<]
- Kotak Di Bawah 10000:
++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
- Aliran Fibonacci:
>++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<]
- ASCII Urutan hingga input:
,[.[>+<-]>-]
(Yang ini membutuhkan nomor sel yang bervariasi berdasarkan input)
Jawaban:
sed, kompiler 46 byte
Saya tidak melihat bahwa output juga seharusnya golf sampai setelah menulis program, jadi saya akan pergi untuk kompiler pendek. Juga itu terlalu banyak pekerjaan untuk diuji, jadi tolong beri tahu jika tidak berfungsi dengan benar :)
sumber
C ++
Ukuran kompiler: 630 byte (-10 byte terima kasih kepada Zacharý)
Hello World mengkompilasi ukuran hasil: 139
Square di bawah 10000: 319
Kompiler:
Penerjemah brainfuck acak:
Beberapa catatan:
sumber
pii
menjadiP
, dan mengubah definisiR
untukm[p<0?p%30000+30000:p]
, dan memodifikasi semua panggilan / referensi sesuai dengan itu. Selain itu, ia memodifikasi kasus uji. Saya belum memeriksa ini, tetapi mungkin menyimpan beberapa byte untuk mendefinisikan sesuatu menjadi30000
, karena Anda sering menggunakannya.R
akanm[p<0?p%S+S:p]
berhasil?R
harus menghemat beberapa byte.rs , 33 byte, Nilai: 2659
Sebagian besar hanya port
sed
jawaban sederhana.sumber