Brainf * ck, 98 77
Jelas ini bukan untuk tujuan menang, tetapi apa yang akan terjadi jika tidak memiliki solusi brainfk
++++[>++++<-]>>,<[->>++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]++++++[->++++++++<]>.[-]>[-<<<+>>>]<<<<]
Karena brainfk hanya dapat menangani bilangan bulat 8bit dan tidak ada negatif saya kira itu tidak sepenuhnya mematuhi aturan tapi hei saya tidak pernah di dalamnya untuk memenangkannya.
Ini sebenarnya berfungsi untuk input 16-bit jika penerjemah Anda mendukung
Saya bahkan mendapatkannya untuk output dalam nilai ascii
Berikut adalah kode yang dianotasi:
++[>++++<-] preload 8 onto cell 1
>>,< input into cell 2
[- iterate over cell 1
>>++< put 2 in cell 3
[->-[>+>>]>[+[-<+>]>+>>]<<<<<] division algorithm: converts {n d} into {0 d_minus_n%d n%d n/d}
>[-]++++++[->++++++++<]> clears cell 4 and puts 48(ascii of 0) into cell 5
.[-] output n%2 and clear it (the bit)
>[-<<<+>>>] bring n/2 into cell 2 (to be used for division in next iteration)
<<<<] end iterate
Algoritma yang lebih pendek (77):
+>,>-<[>>[->]++[-<+]-<-]++++++++[->++++++<]>+[->+>+>+>+>+>+>+>+<<<<<<<<]>[.>]
Yang ini hanya bisa menangani bilangan bulat 8bit.
Algoritme bekerja dengan menggunakan penghitung biner yang sebenarnya sangat pendek (satu kenaikan adalah >[->]++[-<+]-<-yang kemudian menjabarkan bit-bit. Masalahnya adalah sulit untuk mencetak semua bit
Algoritma terakhir itu dapat diadaptasi agar sesuai dengan sejumlah bit dengan mengorbankan byte. Untuk dapat berurusan dengan integer N bit, diperlukan 53 + 3 * N byte untuk menyandikan.
contoh:
(1 bit) +>,>-<[>>[->]++[-<+]-<-]++++++++[->++++++<]>+[->+<]>[.>]
(2 bit) +>,>-<[>>[->]++[-<+]-<-]++++++++[->++++++<]>+[->+>+<<]>[.>]
(3 bit) +>,>-<[>>[->]++[-<+]-<-]++++++++[->++++++<]>+[->+>+>+<<<]>[.>]
etc