Python 3 / > <> , 177 173 172 167 Bytes
Vielen Dank an @mathmandan für das Rasieren von 5 Bytes!
Nun, das war eine Erfahrung, und es war auch eine anstrengende. Vorschläge zum Golfen sind willkommen, da dies ziemlich lang ist. Ich habe mein Bestes versucht, um Text wiederzuverwenden, aber es war ziemlich schwierig.
Technisch wäre es Python 3, das dieses Programm ausgeben sollte (und ich könnte das ändern, wenn ich die Spezifikationen nicht erfülle - aber im Beispiel wurde die Python / C-Ausgabe Python
aufgelistet).
aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!" #v "><>"r~/
a=", it was built for "+v#\a
print(aa[-3::-1]+"Pytho" +"n"+a)
# .4b;!?lor"!nohtyP r"~/
Probieren Sie es mit einem Online-Interpreter> <> und einem Python 3-Interpreter aus (für den Interpreter > <> müssen Sie den Code manuell eingeben).
Kehrt zurück
This program wasn't written in ><>, it was built for Python!
in> <> und
This program wasn't written in Python, it was built for ><>!
in Python.
Erklärung (Python)
Für die Python-Seite ist es ziemlich einfach. Hier ist der Code, den wir interessieren (im Grunde der Code ohne Kommentare, die #
in Python mit einem gekennzeichnet sind ). Beachten Sie, dass in Python \
ein Escape-Zeichen ist, wenn es in Zeichenfolgen verwendet wird, sodass \"
es "
in der Zeichenfolge ausgewertet wird .
aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"
a=", it was built for "+v
print(aa[-3::-1]+"Pytho" +"n"+a)
Was uns hier am meisten interessiert, sind die Operationen, die für die Variable ausgeführt werden aa
:
aa[-3::-1]: reverses the string and chops off the quotation marks (thanks to @mathmandan)
Die print-Anweisung wird somit zu ausgewertet
"This program wasn't written in " + "Pytho" + "n" + ", it was built for ><>!"
Erklärung (> <>)
Jetzt kommen wir zum schwierigeren Teil. Hier noch einmal der Code, bei dem die unnötigen Bits entfernt wurden.
aa=" ni nettirw t'nsaw margorp sihT\"\
v "><>"r~/
a=", it was built for "+v \a
.4b;!?lor"!nohtyP r"~/
Linie 1:
aa=" ni nettirw t'nsaw margorp sihT\"\
aa= pushes 1 onto the stack (evaluates 10==10, basically)
" ni ... \" pushes the first part plus a \ onto the stack.
\ deflects the pointer downwards
Der Stapel im Moment (falls gedruckt): \This program wasn't written in
Zeile 2:
Beachten Sie, dass Zeile 2 an der /
Position des Zeigers von Zeile 1 beginnt und von rechts nach links verschoben wird.
v "><>"r~/
/ deflects the pointer leftwards
~r pops the / off the stack and then reverses it
"><>" pushes ><> onto the stack
v deflects the pointer downwards
Der Stack im Moment: ><> ni nettirw t'nsaw margorp sihT
Zeile 3:
Wie die vorherige Zeile beginnt diese an der Stelle \
, an der Zeile 2 den Zeiger sendet. Beachten Sie, dass, da der Zeiger beim Erreichen der ersten Zeile um die Zeile herum verläuft, a
ich meine Erklärung in der Reihenfolge schreiben werde, in der der Zeiger sich befindet (und damit, was ausgeführt wird).
a=", it was built for "+v \a
\aa= deflect and push 1 onto the stack
", i ... " push the string onto the stack
+v sum the last two values pushed and deflect
Der Stapel im Moment ( x
ist das Zeichen, das durch Hinzufügen von "r" und einem Leerzeichen gebildet wird. - Es ist nicht das eigentliche Zeichen, sondern nur ein Platzhalter von mir):
xof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
Zeile 4:
Der Zeiger fährt einfach nach unten fort, sodass diese Zeile keine weitere Erklärung verdient.
Zeile 5:
Beginnen Sie bei /
und gehen Sie nach links.
.4b;!?lor"!nohtyP r"~/
~"r Python!" pops x off and adds back r and a space
r reverses the stack
o pops and prints a character
l?!; pushes the length of the stack and stops if it's 0
b4. pushes 11 then 4 then moves to that location (where o is)
Der Stack im Moment (die Ausgabe ist umgekehrt):
!nohtyP rof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
Und das sollte es für die Erklärung sein. Lassen Sie mich wissen, ob die Erklärung / der Code inkonsistent ist oder ob ich etwas falsch gemacht habe. Ich habe meinen Code noch ein wenig runtergespielt, als ich gerade die Erklärung schrieb, damit ich vielleicht ein bisschen alten und neuen Code gemischt habe.