Ihre Herausforderung besteht darin, Eingabetext in Brain-Flak-Code umzuwandeln, der den Text ausgibt.
Tutorial von hier mit freundlicher Genehmigung hier genommen
Brain-Flak hat zwei Stapel, die als "links" und "rechts" bekannt sind. Der aktive Stapel beginnt links. Wenn ein leerer Stapel abgelegt wird, wird 0 zurückgegeben. Das war's. Keine anderen Variablen. Wenn das Programm gestartet wird, wird jedes Befehlszeilenargument auf den aktiven Stapel übertragen.
Die einzigen gültigen Zeichen in einem Brain-Flak-Programm sind ()[]{}<>
, und sie müssen immer ausgeglichen sein. Es gibt zwei Arten von Funktionen: Niladen und Monaden . Ein Nilad ist eine Funktion, die 0 Argumente akzeptiert . Hier sind alle Niladen:
()
Wertet zu eins aus.[]
Wertet auf die Höhe des aktuellen Stapels aus.{}
Pop den aktiven Stapel. Wertet den gepoppten Wert aus.<>
Schaltet den aktiven Stapel um. Wertet auf Null aus.
Diese werden bei der Auswertung miteinander verkettet. Wenn wir also eine '3' über dem aktiven Stapel hatten, ist dieser Ausschnitt:
()(){}
würde auswerten, zu 1 + 1 + active.pop()
dem 5 auswerten würde.
Die Monaden nehmen ein Argument, einen Teil des Brain-Flak-Codes. Hier sind alle Monaden:
(n)
Drücken Sie 'n' auf dem aktiven Stapel.[n]
Wertet zu negativem 'n' aus{foo}
Während sich Null nicht oben auf dem Stapel befindet, tun Sie foo.<foo>
Foo ausführen, aber mit 0 bewerten.
Diese Funktionen geben also auch den Wert in ihnen zurück
(()()())
Will aber 3 schieben
((()()()))
Schiebt 3 zweimal .
Der {}
wird zur Summe aller Läufe ausgewertet. Wenn wir also "3" und "4" oben auf dem Stapel hätten:
{{}}
würde mit 7 bewertet.
Wenn das Programm ausgeführt ist, wird jeder auf dem aktiven Stapel verbleibende Wert mit einem Zeilenumbruch zwischen gedruckt. Werte auf dem anderen Stapel werden ignoriert.
Regeln
- Sie können davon ausgehen, dass der Brain-Flak mit Ascii-Out ausgeführt wird. (
-A
) - Der Brain-Flak-Code muss NICHT eingegeben werden
- Es gelten alle Standardregeln
- Der Code muss innerhalb von 1 Minute für jede Eingabe von bis zu 1024 Bytes auf TIO ausgeführt werden. (Wenn kein TIO-Ausgang verfügbar ist, liefern Sie einen Interpreter und ich werde ihn auf meinem Computer ausführen (mein Computer sollte in der Lage sein, TIO nahe zu kommen).
- Sie müssen die Eingabe einer beliebigen Länge unterstützen.
- Sie können Eingaben aus einer Datei übernehmen.
- Eine Optimierung für Testfälle ist nicht zulässig
- Deterministische Ausgabe ist erforderlich
- Programme müssen nicht stapelrein sein
Testfälle (versuchen Sie Ihren Code auf diesen, die tatsächlichen Bewertungstexte werden in 1-2 Wochen nach der Veröffentlichung der Herausforderung veröffentlicht)
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
The meaning of brain-flak is to flak your brain with pain.
`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?
To be, or not to be, that is the question:
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
Or to take arms against a sea of troubles
And by opposing end them. To die-to sleep,
No more; and by a sleep to say we die
<your brain-flak code here>
The fitness pacer test is a multi stage test. Avacado Avacado Avacadad Avacadad carrot.bat carrot.jar carrot.carrot Quack Quack Quack Quack Quack Quack Quack Quack Quack downgoat doawngoat down down gaot
This challenge came from a online program that turned text into brain-fuck. However brain-fuck has limitations and it is not nearly as cool as brain-flak. I really am looking forward to cool programs :) I am glad you took the time to read this and look forward to seeing your answer.
Gewinnen
Um zu gewinnen, müssen Sie die Gesamtlänge des Brain-Flak-Codes für jeden Testfall angeben, der 1-2 Wochen nach dem Post-Datum veröffentlicht wird. Die kürzeste Gesamtlänge gewinnt.
HINWEIS!!!!!!:
Dies ist kein Code-Golf , die Länge Ihres Codes hat keinen Einfluss auf Ihr Endergebnis. Es wird geschätzt, sauberen lesbaren Code zu erstellen. Vielen Dank!
Testfälle
<your brain-flak code here>
unter 1000 fällt, wird mit dem Kopfgeld belohnt. Was ich für einen weiteren Tag nicht posten kann, whoops; Ich habe nicht bemerkt, wie neu das war.