Python 3 / > <> , 177 173 172 167 byte
Grazie a @mathmandan per aver rasato 5 byte!
Bene, questa è stata un'esperienza, e anche una prova. Qualsiasi suggerimento sul golf è il benvenuto, poiché è piuttosto lungo. Ho fatto del mio meglio per riutilizzare il testo, ma è stato abbastanza difficile.
Tecnicamente, sarebbe Python 3 che questo programma avrebbe prodotto (e potrei cambiarlo se non avessi soddisfatto le specifiche - ma nell'esempio è Pythonstato elencato l' output di 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"~/
Provalo su un interprete> <> online e un interprete Python 3 (l' interprete > <> richiede di inserire il codice manualmente)
ritorna
This program wasn't written in ><>, it was built for Python!
in> <> e
This program wasn't written in Python, it was built for ><>!
in Python.
Spiegazione (Python)
Per il lato Python delle cose, è piuttosto semplice. Ecco il codice a cui teniamo (fondamentalmente il codice senza commenti, che sono indicati da a #in Python). Nota che in Python \è un carattere di escape quando usato nelle stringhe, quindi \"valuta "nella stringa.
aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"
a=", it was built for "+v
print(aa[-3::-1]+"Pytho" +"n"+a)
Ciò che ci interessa di più qui sono le operazioni eseguite sulla variabile aa:
aa[-3::-1]: reverses the string and chops off the quotation marks (thanks to @mathmandan)
L'istruzione print quindi valuta
"This program wasn't written in " + "Pytho" + "n" + ", it was built for ><>!"
Spiegazione (> <>)
Ora arriviamo alla parte più difficile. Ancora una volta, ecco il codice con i bit non necessari rimossi.
aa=" ni nettirw t'nsaw margorp sihT\"\
v "><>"r~/
a=", it was built for "+v \a
.4b;!?lor"!nohtyP r"~/
Linea 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 in questo momento (se stampata): \This program wasn't written in
Linea 2:
Nota che la linea 2 inizia a /causa della posizione del puntatore dalla linea 1 e si sposta da destra a sinistra.
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 in questo momento: ><> ni nettirw t'nsaw margorp sihT
Linea 3:
Come la riga precedente, questa inizia da \, che è dove la riga 2 invia il puntatore. Si noti che poiché il puntatore si avvolge intorno alla linea quando raggiunge il primo a, scriverò la mia spiegazione in ordine di dove va il puntatore (e quindi cosa viene eseguito)
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 in questo momento ( xè il personaggio formato dall'aggiunta di "r" e uno spazio. - Non è il personaggio reale, solo un mio segnaposto):
xof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
Linea 4:
Il puntatore continua semplicemente verso il basso, quindi questa linea non garantisce ulteriori spiegazioni.
Linea 5:
A partire da /e andando verso sinistra.
.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)
Lo stack in questo momento (l'output è invertito):
!nohtyP rof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
E quello dovrebbe essere per la spiegazione. Fammi sapere se c'è qualche incoerenza tra la spiegazione / codice o se ho fatto qualcosa di sbagliato; Ho analizzato il mio codice un po 'di più mentre ero nel mezzo della stesura della spiegazione, quindi avrei potuto mescolare frammenti di codice vecchio e nuovo.