Este desafío se crea para celebrar mi primer lenguaje esotérico, ¡ Revés !
El revés es un lenguaje unidimensional con un flujo de puntero no lineal. El puntero se mueve tres pasos a la vez, solo ejecuta cada tercera instrucción.
El programa 1..1..+..O..@agregará 1 + 1 y la salida 2 antes de finalizar. Se omiten las instrucciones intermedias, así que1<>1()+{}O[]@ es exactamente el mismo programa.
Cuando el puntero está a punto de salir del final de la cinta, en su lugar invierte la dirección y avanza hacia el otro lado, por lo que 1.@1.O+. es el mismo programa. Tenga en cuenta que solo cuenta la instrucción final una vez. Esto nos permite comprimir la mayoría de los programas lineales, como1O+1@
Su desafío aquí es escribir un programa o función que tome una cadena y muestre las instrucciones que se ejecutarían si el programa se interpretara como Revés (no necesita manejar ninguna instrucción real de Revés). Solo debe generar hasta que el puntero caiga en el último carácter de la cadena (en cuyo punto la ejecución normalmente iría hacia atrás).
¡Pero espera , eso no es todo! Cuando su propio programa se interpreta de esta manera, el código resultante debería generar uno de los siguientes:
(Mostly) worksTuring complete'Recreational'(las comillas pueden ser'o", pero no ambas)Perfectly okayOnly a few bugs
Por ejemplo, si su código fuente es code 2 backhand, entonces el programace cankb od2ahd debería generar una de estas frases.
Casos de prueba:
"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)
"---!---!" -> "-!-----!"
Y un programa de referencia escrito en, por supuesto, Revés ( esto podría ser un poco defectuoso Ok, creo que lo he solucionado).
Reglas.
- Las lagunas estándar están prohibidas
- La entrada del primer programa contendrá solo ASCII imprimible y nuevas líneas (es decir, bytes
0x20,0x7Easí como 0x0A) - Puede elegir si su segundo programa se convierte del primero en bytes o en caracteres UTF-8.
- Segundo programa:
- El caso no importa, por lo que su salida podría ser
pErFectLy OKaysi lo desea. - Cualquier cantidad de espacios en blanco al inicio / final (nueva línea, tabulaciones, espacios) también está bien.
- El segundo programa debe ser el mismo idioma que el primero, aunque no necesariamente el mismo formato (programa / función)
- Me complace incluir sugerencias de los comentarios sobre frases adicionales (siempre que no sean demasiado cortas)
- El caso no importa, por lo que su salida podría ser
- Como se trata de código de golf , ¡su objetivo es obtener la respuesta más breve para su idioma!
- En dos semanas, otorgaré una recompensa de 200 a la respuesta de revés más corta.
"---!---!"(o cualquier cadena donde aparezca el último carácter más de una vez)