Python 3 / > <> , 177 173 172 167 Bytes
¡Gracias a @mathmandan por eliminar 5 bytes!
Bueno, esta fue una experiencia, y también una prueba. Cualquier sugerencia de golf es bienvenida, ya que esto es bastante largo. Hice todo lo posible para reutilizar el texto, pero fue bastante difícil.
Técnicamente, sería Python 3 el que debería generar este programa (y podría cambiarlo si no cumpliera con las especificaciones, pero en el ejemplo Pythonse enumeró la salida de Python / C ).
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"~/
Pruébelo en un intérprete en línea> <> y en un intérprete de Python 3 (el intérprete > <> requiere que ingrese el código manualmente)
Devoluciones
This program wasn't written in ><>, it was built for Python!
en> <> y
This program wasn't written in Python, it was built for ><>!
en Python
Explicación (Python)
Para el lado de Python, es bastante simple. Aquí está el código que nos interesa (básicamente el código sin comentarios, que se denota con un #en Python). Tenga en cuenta que en Python \es un carácter de escape cuando se usa en cadenas, por lo que se \"evalúa "en la cadena.
aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"
a=", it was built for "+v
print(aa[-3::-1]+"Pytho" +"n"+a)
Lo que más nos importa aquí son las operaciones realizadas en la variable aa:
aa[-3::-1]: reverses the string and chops off the quotation marks (thanks to @mathmandan)
La declaración impresa se evalúa así
"This program wasn't written in " + "Pytho" + "n" + ", it was built for ><>!"
Explicación (> <>)
Ahora llegamos a la parte más difícil. Una vez más, aquí está el código con los bits innecesarios eliminados.
aa=" ni nettirw t'nsaw margorp sihT\"\
v "><>"r~/
a=", it was built for "+v \a
.4b;!?lor"!nohtyP r"~/
Línea 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
La pila en este momento (si está impresa): \This program wasn't written in
Línea 2:
Tenga en cuenta que la línea 2 comienza en la /posición del puntero desde la línea 1 y se mueve de derecha a izquierda.
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
La pila en este momento: ><> ni nettirw t'nsaw margorp sihT
Línea 3:
Al igual que la línea anterior, esta comienza en \, que es donde la línea 2 envía el puntero. Tenga en cuenta que debido a que el puntero se ajusta alrededor de la línea cuando llega al primero a, escribiré mi explicación en orden de dónde va el puntero (y, por lo tanto, qué se ejecuta)
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
La pila en este momento ( xes el personaje formado por la adición de "r" y un espacio. No es el personaje real, solo un marcador de posición de mi parte):
xof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
Línea 4:
El puntero simplemente continúa hacia abajo, por lo que esta línea no garantiza más explicaciones.
Línea 5:
Comenzando en /y yendo hacia la izquierda.
.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)
La pila en este momento (la salida se invirtió):
!nohtyP rof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
Y eso debería ser todo por la explicación. Avíseme si hay alguna inconsistencia entre la explicación / código o si hice algo mal; Aprendí un poco más mi código mientras estaba escribiendo la explicación para poder mezclar fragmentos de código antiguo y nuevo.