Burlesque, 40 Bytes
ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh
Erläuterung:
Burlesque verfügt über integrierte Funktionen zur Stapel- und Codemanipulation. Sie können zwar nicht auf den Quellcode des Programms zugreifen, aber Sie können auf den verbleibenden Code zugreifen, der in Zukunft ausgeführt werden soll. Dies bedeutet #Q, dass der gesamte darauf folgende Code zurückgegeben wird, weshalb wir alles #Qzu dem Code addieren müssen, mit dem wir arbeiten ri#Q.
blsq ) #Q1 2++
12 -- this is the result of 1 2++
{1 2 ++} -- this is the result of #Q
++1 2ist technisch illegaler Code, da er stapelbasiert ist. Wir können den Code jedoch so manipulieren, dass er wie folgt ausgeführt wird 1 2++:
blsq ) #Q<-#q++1 2
12
Die Arbeit mit diesen integrierten Funktionen ist unglaublich knifflig und niemand hat sie bisher für produktive Zwecke verwendet, außer für quine-bezogene Dinge. Wenn du umkehrst ++1 2bekommst du 2 1++was produziert 21und nicht 12. Der Grund, warum der obige Code erzeugt, 12ist, dass er #Qauch das beinhaltet, <-damit wir am Ende viel mehr ausführen als nur 2 1++: p. Am Ende führen wir das aus, 2 1++#q<-was produziert 12.
Wir können tatsächlich Dinge in unserem Code ersetzen, zum Beispiel ersetzt dieser Code alle Vorkommen von sich ?+selbst durch?*
blsq ) #Q(?+)(?*)r~5.-#q5 5?+
25
Verwendung:
$ echo "1" | blsq --stdin 'ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh'
hs fi sp "-<" j +. /\ "Q#ir" -~ HS 2Q#ir
$ echo "0" | blsq --stdin 'ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh'
ri#Q2 SH ~- "ri#Q" \/ .+ j "<-" ps if sh