Apa kode BrainFuck terbaik (dalam hal ukuran kode) untuk mencetak 'A' 1000 kali?
Pendekatan saya adalah:
- set 'A' ke p [0]
- atur 255 ke p [1] untuk menampilkan 255 'A', 3 kali
- atur 235 ke p [1] untuk menampilkan 235 'A'
Ini tidak efektif tetapi saya tidak dapat menemukan cara untuk menggunakan penghitung derek secara bersamaan seperti perkalian
Apakah ada pendekatan yang lebih baik daripada multiplikasi?
Pertanyaan yang lebih umum: apakah ada aturan untuk membuat perkalian dengan jumlah besar dengan kode sekecil mungkin?
+
karakter paling sedikit atau singkatnya?Jawaban:
Metode yang saat ini Anda gunakan adalah 39 byte:
>>+++[<-[-<.>]>-]++++[<----->-]<-[-<.>]
(tidak termasuk mendapatkanA
) ( Coba Daring! )(loop 3 kali, setiap kali atur penghitung ke 255 dan cetak berkali-kali, lalu kurangi 20, kurangi 1, dan cetak berkali-kali)
Namun, ini jauh lebih pendek untuk mengulang 250 kali dan mencetak 4 kali setiap kali (terima kasih kepada jimmy23013 untuk mengoptimalkan ini melalui solusi loop-4 loop-250 print-1 asli saya):
>------[<....>-]
(16 byte)Jika sel-sel Anda tidak terikat (saya berasumsi mereka 8-bit jika tidak, Anda mungkin tidak akan mencoba menggunakan 255 untuk bermain golf):
>>++++++++++[<++++++++++[<..........>-]>-]
(42 byte).sumber
....
akan lebih pendek.47 Bytes (Tanpa Aliran Bawah)
Saya baru saja melakukan solusi ini dalam 47 byte. Saya mencoba melakukannya dengan cara yang berbeda dari biasanya saya mencoba menghemat ruang dengan menyulap penghitung antara dua nilai. Diasumsikan bahwa A dimuat ke dalam p [4].
Dijelaskan
sumber
cara terpendek untuk mendapatkan nomor 65 untuk 'A' adalah
>+[+[<]>>+<+]>
, dan kemudian Anda cukup menambahkan HyperNeutrino di>------[<....>-]
akhir itu. jadi kode lengkapnya menjadi>+[+[<]>>+<+]>>------[<....>-]
(30 byte)sumber
>+[+[<]>>+<+]------[>....<-]