Joe jest twoim przeciętnym programistą BF. Ma zamiar sprawdzić zmiany swojego kodu w repozytorium, gdy otrzyma telefon od swojego szefa. „Joe! Maszyna nowego klienta jest zepsuta! Interpretator ustawia wszystkie komórki na losowe wartości przed wykonaniem programu. Nie ma czasu na naprawę, twój kod będzie musiał sobie z tym poradzić.” Joe nie myśli o tym zbyt wiele i ma zamiar napisać program, który wyzeruje pierwszy milion komórek, gdy jego szef ponownie mu przerywa - „... i nie myśl o użyciu brutalnej siły, kod musi być tak mały, jak to możliwe. ” Teraz musisz pomóc biednemu Joe!
Dane techniczne
- Otrzymasz jakiś poprawny kod pieprzenia mózgu jako dane wejściowe
- Twój program następnie zmodyfikuje kod, aby działał na losowym interpretatorze pieprzenia mózgu
- Oznacza to, że przed wykonaniem programu komórki można ustawić na dowolną wartość.
- Nowy program powinien mieć dokładnie takie samo zachowanie bez względu na warunki początkowe.
- Interpretator będzie miał maksymalną wartość 255 z owinięciem i taśmę o nieskończonej długości.
Punktacja
Twój wynik to 10-krotność wielkości kompilatora w bajtach plus suma rozmiarów przypadków testowych . Najniższy wynik oczywiście wygrywa. Aby złagodzić optymalizację przypadków testowych, zastrzegam sobie prawo do zmiany przypadków testowych, jeśli coś podejrzewam, i prawdopodobnie zrobi to przed wyborem zwycięzcy.
Przypadki testowe
(Mam je ze strony esolangs i tej strony: http://www.hevanet.com/cristofd/brainfuck/ ). Również dzięki @Sparr za ostatni przypadek testowy.
- Witaj świecie:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
- Odwrotne wejście:
>,[>,]<[.<]
- Powers of Two (Infinite Stream):
>++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<]
- Kwadraty poniżej 10000:
++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
- Strumień Fibonacciego:
>++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<]
- Sekwencja ASCII do danych wejściowych:
,[.[>+<-]>-]
(Ta wymaga różnych liczb komórek w zależności od danych wejściowych)