Semua berang-berang yang sibuk membuat kekacauan. Mereka menulis di seluruh kaset. Pada tingkat ini, tetangga kita akan berhenti meminjamkan kami kaset tanpa batas.
Kami membutuhkan cara baru untuk memainkan game berang-berang yang sibuk, yang tidak merusak setiap kaset yang kami gunakan.
Aturan
Brainfuck saja. Pita memori tidak terikat dua arah. Instruksi input akan selalu membaca , sehingga dapat digunakan untuk menghapus nilai.
Batas sumber 50 byte.
Di akhir eksekusi, memori harus seluruhnya detik.
Skor adalah jarak antara lokasi memori pointer awal dan lokasi akhir - jika dibutuhkan pindah petunjuk untuk pergi di antara mereka, skor Anda adalah n . Lebih tinggi lebih baik. Berikan nilai tepat jika Anda bisa, jika tidak, berikan taksiran.
Contoh
32 byte,
-[-[[>]+>+[<]>-[[>]<+<+[<]>-]]>]
Penjelasan
- Initialize the list to [255].
[ ] Repeat as long as the list is not empty.
[- ] Decrement the left end. We need to shrink the numbers so it ends eventually.
[ [ ] ] Skip if 0 already.
[ [[>] ] ] Move to the cell past the right end.
[ [ + ] ] Make this cell 1.
[ [ > ] ] Go right again.
[ [ + ] ] Make this cell 1. We've now appended [1, 1].
[ [ [<]> ] ] Go back to the first nonzero cell on the left.
[ [ - ] ] And decrement it.
[ [ [ ]] ] We will need to transfer the rest of the number from the left to the right, so keep looping.
[ [ [[>]< ]] ] Go to the last nonzero cell on the right.
[ [ [ +<+ ]] ] Increment this and the one on the left. These are the cells we appended earlier. We transfer to them.
[ [ [ [<]> ]] ] Go back to the first nonzero cell on the left, which we are transferring from.
[ [ [ -]] ] Decrement here on the left to balance out the incrementing on the right.
[ >] We end the iteration on a now empty cell. Move right, the new left end is there.
Kita mulai dengan daftar . Pada setiap iterasi, kita mengkonsumsi nilai n di sebelah kiri daftar, dan jika n > 1 , kita menambahkan [ n - 1 , n - 1 ] ke kanan. Angka-angka yang ditambahkan ( n - 1 ) lebih rendah dari yang asli ( n ) , sehingga mereka akan menjadi lebih kecil sampai mereka 1 , pada titik mana mereka dikonsumsi tanpa berkembang. Dengan demikian, proses berakhir pada akhirnya, dengan semua 0dalam memori. Namun, pada setiap langkah, jumlah salinan dari nomor tersebut berlipat ganda. Skor program ini diinisialisasi dengan daftar adalah 2 n - 1 .
Contoh ini dimaksudkan untuk menunjukkan beberapa teknik yang digunakan dalam membuat kiriman. Ini tidak kompetitif untuk ukurannya.
Jawaban:
[-[<+>>[-<[->+<]+>>]+<-]>[>]+[<]+<]
1 - m, m, 1 <n times>
m
Saya menggunakan program Python berikut untuk memodelkan perilaku program:
sumber
>
.