Diese Herausforderung zelebriert meine erste esoterische Sprache, Backhand !
Rückhand ist eine eindimensionale Sprache mit einem nichtlinearen Zeigerfluss. Der Zeiger bewegt sich drei Schritte gleichzeitig und führt nur jeden dritten Befehl aus.
Das Programm 1..1..+..O..@
addiert 1 + 1 und gibt 2 aus, bevor es beendet wird. Die Zwischeninstruktionen werden übersprungen, es 1<>1()+{}O[]@
handelt sich also genau um das gleiche Programm.
Wenn der Zeiger das Ende des Bandes verlässt, dreht er stattdessen die Richtung um und geht in die andere Richtung, so dass 1.@1.O+.
das gleiche Programm läuft. Beachten Sie, dass die Endanweisung nur einmal gezählt wird. Dadurch können wir die meisten linearen Programme wie z1O+1@
Hier besteht Ihre Herausforderung darin, ein Programm oder eine Funktion zu schreiben, die eine Zeichenfolge akzeptiert, und die Anweisungen auszugeben, die ausgeführt würden, wenn das Programm wie Rückhand interpretiert würde (Sie müssen keine tatsächlichen Rückhandanweisungen verarbeiten). Sie dürfen nur ausgeben, bis der Zeiger auf dem letzten Zeichen des Strings landet (an diesem Punkt würde die Ausführung normalerweise rückwärts gehen).
Aber warte , das ist noch nicht alles! Wenn Ihr Programm selbst auf diese Weise interpretiert wird, sollte der resultierende Code einen der folgenden Werte ausgeben:
(Mostly) works
Turing complete
'Recreational'
(Anführungszeichen können entweder'
oder"
aber nicht beide sein)Perfectly okay
Only a few bugs
Wenn Ihr Quellcode beispielsweise lautet code 2 backhand
, sollte das Programm ce cankb od2ahd
einen dieser Sätze ausgeben.
Testfälle:
"1 1 + O @" -> "11+O@"
"1O+1@" -> "11+O@"
"HoreWll dlo!" -> "Hello World!"
"abcdefghijklmnopqrstuvwxyz" -> "adgjmpsvyxurolifcbehknqtwz"
"0123456789" -> "0369" (not "0369630369")
"@" -> "@"
"io" -> "io" (Cat program in Backhand)
"!?O" -> "!?O" (Outputs random bits forever in Backhand)
"---!---!" -> "-!-----!"
Und ein Referenzprogramm, das natürlich in Backhand geschrieben ist ( das könnte ein bisschen fehlerhaft sein Okay, ich denke, ich habe es behoben).
Regeln.
- Standardlücken sind verboten
- Die Eingabe des ersten Programms enthält nur druckbare ASCII- und Zeilenumbrüche (dh Bytes
0x20
-0x7E
sowie 0x0A). - Sie können wählen, ob Ihr zweites Programm von Ihrem ersten byte- oder UTF-8-Zeichen konvertiert wird.
- Zweites Programm:
- Groß- und Kleinschreibung spielt keine Rolle, daher kann Ihre Ausgabe auch eine sein,
pErFectLy OKay
wenn Sie möchten. - Beliebig viele nachgestellte / führende Leerzeichen (Zeilenumbrüche, Tabulatoren, Leerzeichen) sind ebenfalls in Ordnung.
- Das zweite Programm sollte dieselbe Sprache wie das erste sein, jedoch nicht unbedingt dasselbe Format (Programm / Funktion)
- Ich freue mich, Vorschläge aus den Kommentaren zu zusätzlichen Phrasen aufzunehmen (sofern diese nicht zu kurz sind).
- Groß- und Kleinschreibung spielt keine Rolle, daher kann Ihre Ausgabe auch eine sein,
- Da dies Codegolf ist , ist es Ihr Ziel, die kürzeste Antwort für Ihre Sprache zu erhalten!
- In zwei Wochen werde ich die kürzeste Rückhand-Antwort mit 200 Kopfgeldern belohnen.
"---!---!"
(oder eine beliebige Zeichenfolge, bei der das letzte Zeichen mehr als einmal vorkommt)