Escriba un código que actúe como un programa cat. Es decir, ingresar una cadena y enviarla como está. Pero la reversión normal de su código debe generar la reversión normal de la cadena de entrada. Y la reversión visual de su código debe generar la reversión visual de la cadena de entrada.
La reversión normal es la secuencia de caracteres invertida de una cadena. La reversión visual es la reversión normal con los caracteres ()[]{}<>
reemplazados por )(][}{><
respectivamente.
Puede usar cualquier página de códigos que tenga los caracteres ()[]{}<>
y se publique antes de este desafío para definir los caracteres. Debe usar la misma página de códigos para todo su código. Su código original debe ser válido en esta página de códigos, y la aplicación de cualquiera de sus códigos invertidos a eso debería rendirse.
Este es el código de golf , el código más corto en bytes gana.
Ejemplo
Para la cadena AB(XY)
, sus reversiones normales y visuales son )YX(BA
y (YX)BA
respectivamente.
Si su código (en un lenguaje hipotético) es AB(XY)
, entonces el código )YX(BA
y (YX)BA
debería generar las reversiones normales y visuales de la cadena de entrada respectivamente. Y AB(XY)
debe actuar como un programa de gatos.
fuente
Respuestas:
05AB1E , 16 bytes
Utiliza el hecho de que 05AB1E tiene una constante predefinida
"()<>[]{}"
y no se ve afectada por la reversión visual.Código:
Explicación:
Pruébalo en línea!
Invertido:
Explicación:
Pruébalo en línea!
Visualmente invertido:
Explicación:
Pruébalo en línea!
Utiliza la codificación CP-1252 .
fuente
CJam, 21 bytes
Pruébalo aquí.
Reversión normal:
Pruébalo aquí.
Reversión visual:
Pruébalo aquí.
Explicación
Primero, el código normal:
Esto es simple:
q
lee todas las entradas,e#
comenta el resto del programa y la entrada se imprime implícitamente al final.Ahora la reversión normal:
Y finalmente, la reversión visual:
fuente
Haskell, 124 bytes
Adelante:
Reversa normal:
Visual reverso:
Cada versión define una función
f
que toma y devuelve una cadena. En el modo directof
es la función de identidadid
, el resto del código es un comentario. En el modo inverso normal, la protección1<2
en síf
estáTrue
, por lo quereverse
se aplica. En el modo visual inverso,<
se cambia a>
y el protector esFalse
. La segunda protección es al revés yTrue
en modo visual, por lo que adicionalmenteq
se aplica lo que cambia "() <> {} []".Además
<
y>
en los guardias, mi código no usa ninguno de los corchetes, por lo que no se pueden estropear.fuente
Bash + utilidades comunes de Linux, 51
Reversión normal:
Reversión visual:
El truco principal aquí es que la cadena
()[]{}<>
está codificada como 691E97CA5D607DB5 (base 15). Eldc
comando resultante producirá este mismo resultado después de cualquier tipo de reversión. Sin embargo, el'()[]{}<>'
literal de cadena es sensible al tipo de inversión.tac
se requiere para invertir el orden de las líneas de entrada yrev
para invertir los caracteres de cada línea. Cualquier entrada ASCII debe ser aceptable.fuente
MATL,
26242216 bytesAdelante
Pruébalo en línea!
Explicación:
Reversión normal:
Pruébalo en línea!
Explicación:
Reversión visual:
Pruébalo en línea!
Explicación:
fuente
()[]{}<>
reemplazados por)(][}{><
respectivamente.GolfScript,
3228 bytesPruébalo en línea!
Reversión normal:
Pruébalo en línea!
Reversión visual:
Pruébalo en línea!
El hecho de que un programa incomparable
}
termina el programa en GolfScript, lo hizo bastante simple. Sin embargo, estoy bastante seguro de que mi código para intercambiar los corchetes aún no es óptimo.fuente
Python 2.7, 208 bytes
Adelante
Reversión normal
https://eval.in/574639
Reversión visual
https://eval.in/574638
Todas las instrucciones se leen desde stdin hasta EOF.
Nada súper inteligente aquí. Los comentarios finales solo ejecutan el código hacia adelante y hacia atrás, luego una
exec
declaración en un bloque try para detectar errores de sintaxis para las dos reversiones diferentes.fuente