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)
Antworten:
sed, 46 Byte Compiler
Ich habe erst nach dem Schreiben des Programms bemerkt, dass die Ausgabe auch Golf sein sollte, also werde ich mich für den kurzen Compiler entscheiden. Es war auch viel zu viel Arbeit zum Testen, also benachrichtigen Sie bitte, wenn es nicht richtig funktioniert :)
quelle
C ++
Compilergröße: 630 Bytes (-10 Bytes dank Zacharý)
Hello World Kompilierungsergebnisgröße: 139
Quadrat unter 10000: 319
Compiler:
Der randomisierte Brainfuck-Interpreter:
Einige Notizen :
quelle
pii
toP
und die Definition vonR
to ändernm[p<0?p%30000+30000:p]
und alle Aufrufe / Verweise darauf entsprechend ändern . Außerdem modifizierte er die Testfälle. Ich habe dies nicht überprüft, aber es könnte einige Bytes sparen, um etwas zu definieren30000
, da Sie es so oft verwenden.R
zurm[p<0?p%S+S:p]
Arbeit?R
sollte einige Bytes sparen.rs , 33 Bytes, Punktzahl: 2659
Meist nur ein einfacher Port der
sed
Antwort.quelle