Joe ist ein durchschnittlicher BF-Entwickler. Er ist dabei, seine Codeänderungen in ihrem Repository einzuchecken, wenn er einen Anruf von seinem Chef erhält. "Joe! Der Computer des neuen Clients ist kaputt! Der Brainfuck-Interpreter setzt alle Zellen vor der Programmausführung auf zufällige Werte. Keine Zeit, dies zu beheben, Ihr Code muss sich darum kümmern." Joe denkt nicht viel darüber nach und ist dabei, ein Programm zu schreiben, um die ersten Millionen Zellen auf Null zu setzen, wenn sein Chef ihn erneut unterbricht - "... und denken Sie nicht daran, rohe Gewalt anzuwenden, der Code muss sei so klein wie möglich. " Jetzt musst du dem armen Joe helfen!
Spezifikationen
- Sie erhalten einen gültigen Brainfuck-Code als Eingabe
- Ihr Programm ändert dann den Code so, dass er auf einem zufälligen Brainfuck-Interpreter funktioniert
- Dies bedeutet, dass die Zellen vor der Programmausführung auf einen beliebigen Wert gesetzt werden können.
- Das neue Programm sollte unabhängig von den Anfangsbedingungen genau das gleiche Verhalten aufweisen.
- Der Interpreter hat einen maximalen Zellenwert von 255 mit Umbruch und ein Band mit unendlicher Länge.
Wertung
Ihre Punktzahl beträgt das 10-fache der Compilergröße in Bytes plus der Summe der Testfallgrößen . Die niedrigste Punktzahl gewinnt offensichtlich. Um der Optimierung von Testfällen entgegenzuwirken, behalte ich mir das Recht vor, die Testfälle zu ändern, wenn ich etwas vermute, und werde dies wahrscheinlich tun, bevor ich einen Gewinner auswähle.
Testfälle
(Ich habe diese von der Esolangs-Seite und dieser Webseite erhalten: http://www.hevanet.com/cristofd/brainfuck/ ). Vielen Dank auch an @Sparr für den letzten Testfall.
- Hallo Welt:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
- Reverse Input:
>,[>,]<[.<]
- Potenzen von zwei (unendlicher Strom):
>++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<]
- Quadrate unter 10000:
++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
- Fibonacci Stream:
>++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<]
- ASCII-Sequenz bis zur Eingabe:
,[.[>+<-]>-]
(Diese erfordert unterschiedliche Zellennummern basierend auf der Eingabe)