Einer der einfachsten Codes, der von einer Programmiersprache geschrieben wird, ist eine Programmdrucksequenz aus Zeichen (z. B. "Hallo Welt!"). Allerdings s o m e e s o t e r i c Programmiersprachen wie Brainfuck , auch dieser einfachste Code ist ziemlich ärgerlich zu schreiben.
Ihre Aufgabe ist es, ein Programm zu schreiben (muss nicht in Brainfuck geschrieben sein), das ein (minimales) Brainfuck-Programm druckt, das den angegebenen Text druckt.
Eingang
Eine Folge von Zeichen (zwischen 1
und 255
) wird durch ein beliebiges Format (Variable, Argument, stdin, Datei, ...) angegeben.
Ausgabe
Die Ausgabe ist ein gültiger (nicht übereinstimmender [
und nicht übereinstimmender ]
) Brainfuck-Code (vorausgesetzt, 8-Bit-Umbruchzelle ohne Vorzeichen und unbegrenzte Anzahl von Zellen nach links und rechts), der die genaue Zeichenfolge ausgibt, die als Eingabe angegeben wurde.
Eine mögliche Ausgabe für die Eingabe A
ist beispielsweise ++++++++[<++++++++>-]<+.
.
Das >2m
Ausführen Ihres Programms sollte nicht lange dauern ( ).
Die >10s
Ausführung des BF-Programms sollte nicht lange dauern ( ).
Wertung
(Hinweis: Die aktuelle Bewertungsmethode kann sich ändern, da die Berechnung nicht einfach ist ...)
Die Länge des Programms (Generierung von BF-Code) selbst spielt keine Rolle. Das Festcodieren von BF-Codes im Programmcode ist jedoch nicht in Ordnung. Nur akzeptablen Bereich (ex ein Code BF ein einzelnes Zeichen zu drucken. 0x01
: +.
) BF - Codes könnte hartcodiert sein.
Die Punktzahl ist die Summe der Länge der BF-Codes, die diese Zeichenfolgen drucken.
- Ein String,
Hello, world!
an den ein single0x0A
(\n
) angehängt ist (dh das Programm "Hello, world!") - Einzelzeichen von
0x01
~0xFF
- Die Summe der Länge dieser 255 BF-Codes wird mit multipliziert
1/16
, gerundet und zur Punktzahl hinzugefügt.
- Die Summe der Länge dieser 255 BF-Codes wird mit multipliziert
- Liste der ersten 16 Zeichenfolgen, die durch Aufteilen einer zufälligen Folge von Bytes generiert wurden, die am 11.11.11 durch
0x00
Entfernen aller Zeichenfolgen mit der Länge Null generiert wurden . - Lenna.png , alle
0x00
s entfernen . - Songtexte 99 Flaschen Bier , beginnend mit
99 bottles~
, Zeilenumbrüche sind0x0A
, Absätze werden durch zwei0x0A
s getrennt, und kein Zeilenumbruchszeichen am Ende. - Andere Zeichenfolgen, die Sie möglicherweise bereitstellen.
Ihr Programm kann das Berechnen der Bewertung von sich selbst enthalten.
Natürlich gewinnt der Code mit der niedrigsten Punktzahl.
Lenna.png
wird die Partitur dominieren, da es bei weitem die größte Eingabe ist. Vielleicht ein bisschen nach Größe normalisieren?