Joe ortalama BF geliştiriciniz. Patronundan bir çağrı aldığında havuzundaki kod değişikliklerini kontrol etmek üzere. "Joe! Yeni müşterinin makinesi bozuldu! Brainfuck yorumlayıcısı, program yürütülmeden önce tüm hücreleri rastgele değerlere ayarlar. Düzeltmek için zaman yok, kodunuz bununla uğraşmak zorunda kalacak." Joe fazla düşünmüyor ve patronu onu tekrar kestiğinde ilk milyon hücreyi sıfıra ayarlamak için bir program yazmak üzeredir - "... ve kaba kuvvet kullanmayı düşünmeyin, kod olabildiğince küçük ol. " Şimdi fakir Joe'ya yardım etmelisin!
Özellikler
- Girdi olarak geçerli bir brainfuck kodu alacaksınız
- Programınız daha sonra kodu, randomize bir brainfuck yorumlayıcısı üzerinde çalışacak şekilde değiştirir.
- Bu, program yürütülmeden önce hücrelerin herhangi bir değere ayarlanabileceği anlamına gelir.
- Yeni program, başlangıç koşulları ne olursa olsun aynı davranışa sahip olmalıdır.
- Yorumlayıcı, sarma ile birlikte maksimum hücre değerine ve sonsuz uzunlukta bir banda sahip olacaktır.
puanlama
Puanınız, bayt cinsinden derleyici boyutunun 10 katı artı test durumu boyutlarının toplamıdır . Test senaryosu optimizasyonuna karşı hafifletmek için, bir şeyden şüphelendiğimde test senaryolarını değiştirme hakkını saklıyorum ve muhtemelen bir kazanan seçmeden önce bunu yapacağım.
Test Durumları
(Bunları esolangs sayfasından ve şu web sayfasından aldım : http://www.hevanet.com/cristofd/brainfuck/ ). Ayrıca son test davası için @Sparr'a teşekkürler.
- Selam Dünya:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
- Ters Giriş:
>,[>,]<[.<]
- İki Kuvvet (Sonsuz Akım):
>++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<]
- 10000'in Altındaki Kareler:
++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
- Fibonacci Akışı:
>++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<]
- ASCII Girişe kadar dizi:
,[.[>+<-]>-]
(Bu, girişe göre değişen hücre sayıları gerektirir)