Flagrante estafa de una estafa . ¡Vota esos!
Su tarea, si desea aceptarla, es escribir un programa / función que genere / devuelva su entrada / argumento entero. La parte difícil es que si invierto su código fuente, la salida debe ser el entero original negado.
Ejemplos
Digamos que su código fuente es ABC
y su entrada es 4
. Si escribo en su CBA
lugar y lo ejecuto, la salida debe ser -4
.
Digamos que su código fuente es ABC
y su entrada es -2
. Si escribo en su CBA
lugar y lo ejecuto, la salida debe ser 2
.
Una entrada de 0
puede dar 0
o -0
, sin embargo, si admite cero con signo, -0
debería dar 0
.
Respuestas:
PowerShell ,
1814 bytesPruébalo en línea! ! enilno ti yrT
Primero de las respuestas triviales de abuso de comentarios
fuente
J , 3 bytes
Pruébalo en línea!
-&0
es "argumento menos 0"0&-
es "0 menos argumento"fuente
][-
etc.JavaScript, 11 bytes
Pruébalo en línea! El | Invertido
fuente
código de máquina x86, 3 bytes
Los bytes de código anteriores definen una función que no funciona: simplemente devuelve el control a la persona que llama. A esa función le siguen dos bytes basura que no se ejecutarán, ya que vienen después de un retorno; están en "tierra de nadie". En mnemotecnia de ensamblador:
Bien, ahora viene un troll e invierte el orden de los bytes:
Estos bytes ahora definen una función que toma un argumento entero en el
EAX
registro, lo niega y devuelve el control a la persona que llama. En mnemotecnia de ensamblador:Entonces ... eso fue simple. :-)
Tenga en cuenta que podemos hacer que la instrucción de "negación" sea lo que queramos, ya que nunca se ejecuta en la orientación "hacia adelante" y solo se ejecuta en la orientación "invertida". Por lo tanto, podemos seguir el mismo patrón para hacer cosas arbitrariamente más complicadas. Por ejemplo, aquí tomamos un argumento entero en un registro diferente (por ejemplo,
EDI
para seguir la convención de llamadas del Sistema V que se usa comúnmente en los sistemas * nix), lo negamos y lo devolvemos en elEAX
registro convencional :↓ ↓
fuente
Jalea , 2 bytes
Pruébalo en línea! y su reverso .
fuente
ḷN
, no necesitas la lógica OR. : DNa
, las palabras danaN
efecto estético :)Haskell , 8 bytes
Función de identidad anónima, que se convierte en resta de
0
cuando se invierte.Pruébalo en línea!
Invertido:
Pruébalo en línea!
fuente
Espacio en blanco , 48 bytes
Se agregaron letras
S
(espacio),T
(tabulación) yN
(nueva línea) solo como resaltado.Modificación menor de mi respuesta de espacios en blanco para el reverso del código fuente, ¡usted niega la salida! reto .
Pruébelo en línea o en línea al revés (solo con espacios en bruto, pestañas y nuevas líneas).
Explicación:
Utilizando el programa de salida incorporado es un palíndromo corto
NNN
.El programa regular:
El programa inverso:
Pequeña explicación adicional de presionar un número:
S
: Habilite la manipulación de la pilaS
: empujar un número a la pilaS
oT
: Positivo / negativo respectivamenteS
/T
seguido de un finalN
: número en binario, dondeS=0
yT=1
Es decir,
SSTTSTSN
empuja-10
. Para el0
no necesitamos un explícitoS=0
, así que simplementeSSSN
oSSTN
es suficiente.fuente
Perl 6 / Raku, 3 bytes
Pruébalo en línea!
Crea un bloque de código Cualquiera. Leer normalmente es su bloque estándar equivalente
-> \x {x - 0}
, pero a la inversa se convierte-> \x {0 - x}
.fuente
C (clang) , 23 bytes
Pruébalo en línea!
fuente
Brain-Flak , 7 bytes
Pruébalo en línea!
Invertido:
Pruébalo en línea!
Nota: Solo funciona en intérpretes que admiten comentarios (por ejemplo, funciona en Rain-Flak, pero no en BrainHack)
Si también intercambiamos corchetes de apertura / cierre en lugar de simplemente invertir los bytes, podemos hacer esto en 8 bytes sin usar comentarios:
Pruébalo en línea!
¡Pruébalo al revés!
fuente
#
Comienza un comentario, por lo que se ignora el paréntesis en la versión original.Laberinto / Hexagonía , 6 bytes
Laberinto:
Pruébalo en línea! y su reverso .
Hexagonia
Pruébalo en línea! y su reverso .
¿Cómo?
fuente
Python 3 , 22 bytes
Pruébalo en línea!
Una lambda que implementa la función de identidad (o negación)
fuente
MarioLANG , 22 bytes
Pruébalo en línea!
Simplemente ingresa y emite el número antes de caer a EOF
invertido:
Pruébalo en línea!
Se repite hasta que el valor de entrada es 0 y el valor de salida es -input, luego dice el número.
fuente
R , 23 bytes
Decidí intentarlo sin el truco de comentarios.
Adelante
Pruébalo en línea!
Marcha atrás
Pruébalo en línea!
En la versión forward
+
está actuando un operador binario, y-
es un operador unario.En el reverso la
+
convierte en unario y-
es binario. Así función de exploración toma los argumentos:file=""
lo que significa la entrada estándar ywhat=0
, que también son valores predeterminados. Así que cuando el+
es unario el primer argumento es a la derecha, cuando es binario es el primer argumento de la izquierda.los
parte del código no hace nada realmente útil, por lo que en cierto sentido mi código no es realmente mucho más válido que el uso de la observación truco.
fuente
+
redefinido para ser utilizado como unario y binario. Me tomó un minuto entender cómo se analizó esto ... Ningún otro nombre de operador habría hecho el trabajo.Haskell, 12 bytes
Pruébalo en línea! Marcha atrás:
Pruébalo en línea!
No tan breve como la respuesta de Ørjan Johansen , pero sin comentarios.
fuente
Perl 5 (
-p
),76 bytes-1 gracias a @primo
TIO
Un comentario no cambia la entrada
Negar la entrada
TIO
fuente
$_*=$#
TIO . Tenga en cuenta que#
debe ser el último byte del programa; de lo contrario, se interpretará como la variable$#
, en lugar del último índice de la matriz con el nombre <vacío>.$#
da un error (si # no es el último carácter) o nada-p
o-n
. Sospecho que el texto modelo tiene algo que ver con esto ...-p/-n
agrega un;
después del código. Lo que significa que en$#
realidad es$#;
: el tamaño de la matriz@;
. Si el tamaño de los@;
cambios, el resultado ya no es correcto ( TIO ). De todos modos, esto es súper inteligente, ¡bien hecho! :)perl -MO=Deparse -p <(echo -n '$_*=$#')
, porque parece queperl -MO=Deparse -pe '$_*=$#'
agrega una nueva líneaGaia , 2 bytes
Pruébalo en línea!
Invertido:
fuente
Revés ,
65 bytesPruébalo en línea! ¡Pruébalo doblado!
Hecho un poco complejo debido a la naturaleza del puntero en Backhand.
No creo que sea posible acortarlajaja, resulta que me equivoqué. Esto no duplica ninguna instrucción y reutiliza los comandos de entrada, salida y terminación entre los dos programas. Ahora creo que es óptimo, ya que necesita todos losIO-@
comandos para trabajar, y en un programa de 4 bytes solo puede ejecutar dos de esos comandos.Explicación:
El puntero en Backhand se mueve en tres celdas una marca y rebota en los límites de la celda, lo que significa que la lógica general se superpone. Sin embargo, puede manipular esta velocidad con los comandos
v
y^
.El programa original ejecuta las instrucciones
IO-@
, que se ingresan como número, salen como número, restan, terminan. Obviamente el sustrato es superfluo. En el código estos son:El programa invertido se ejecuta
v-I-vO-@
. Estov
reduce los pasos del puntero entre ticks y los-
resta del fondo de la pila, que es implícitamente cero. Los-
comandos adicionales no hacen nada. El programa se ejecuta comofuente
Wolfram Language (Mathematica) , 9 bytes
Pruébalo en línea!
Adelante: leer
((1)&*0+#-0)&*1
=#&
Atrás: leer
((1)&*0-#+0)&*1
=-#&
fuente
R , 14 bytes
Pruébalo en línea!
Un programa completo que lee un número, o lee y niega un número. La funcionalidad inversa está protegida por un comentario en línea.
fuente
Python 3 ,
2214 bytesPruébalo en línea!
Utiliza el
int
constructor de la clase y un método pseudo-privado incorporado.fuente
0.
sería interpretado como un número, que es seguido por un símbolo05AB1E , 2 bytes
Pruébalo en línea!
Invertido
fuente
Befunge-98 (FBBI) , 6 bytes
Pruébalo en línea! ¡Pruébalo al revés!
fuente
APL (Dyalog Unicode) ,
133 bytesPruébalo en línea!
Respuesta trivial Devoluciones
arg
o¯arg
.Ahorró 10 bytes al no ser tonto (gracias Adám).
Alterado el 3-byter resultante a una función más adecuada.
fuente
Lenguaje de máquina de Turing , 39 bytes
Lo positivo
Lo negativo
Este fue un poco más complicado de lo que pensaba, principalmente porque tuve que superar mis prejuicios de tener código que se ejecuta con errores de 'compilación'.
fuente
> <> ,
54 bytesusa la inicialización de la pila con la
-v
opción, pon tu variable de entrada allí.Pruébalo en línea!
O prueba la inversión
Explicación
fuente
Pila de gatos
-mn
, 2 bytesPruébalo en línea!
¡Intenta lo contrario!
Explicación
Resulta que esto es en realidad mucho más fácil que el desafío anterior en Stack Cats. El programa completo (después de aplicar
-m
) aquí es-X-
.X
se usa para intercambiar las pilas hacia la izquierda y hacia la derecha del cabezal de la cinta, es decir, no afecta la pila inicial en absoluto, por lo que podemos ignorarlo. Pero entonces el programa es efectivamente solo--
(niega la parte superior de la pila dos veces), lo que no hace nada.Para el programa inverso, la aplicación
-m
daX-X
. Nuevamente,X
no hace nada, por lo que el programa es efectivamente justo-
, lo que niega la parte superior de la pila.La única otra solución de 2 bytes es
-=
, pero es prácticamente la misma. La única diferencia es que=
intercambia solo la parte superior de las pilas adyacentes, no las pilas completas.Pero, de nuevo, usar se
-m
siente un poco como hacer trampa, por lo que a continuación se muestra una solución que utiliza un programa totalmente duplicado.Pila de gatos
-n
, 7 bytesPruébalo en línea!
¡Intenta lo contrario!
Explicación
Las consideraciones de la respuesta anterior aún se aplican : cualquier solución válida debe usar los caracteres emparejados y
I
. Las seis soluciones posibles (incluidas en el enlace TIO) son prácticamente todas iguales.-
y_
son equivalentes en este programa, y:
pueden reemplazarse por|
oT
(que hacen lo mismo para las entradas que no son cero y coincidentemente también funcionan para las entradas cero). Acabo de elegir este para explicar porque es más fácil.Así que recuerde que la pila inicial mantiene la entrada en la parte superior de a
-1
(en la parte superior de infinitos ceros) mientras que todas las otras pilas a lo largo de la cinta solo contienen ceros. Stack Cats también tiene la propiedad de que cualquier programa de longitud uniforme no hace nada (siempre que finalice, pero de todos modos no podemos usar bucles para este desafío). Lo mismo es obviamente cierto para cualquier programa de longitud impar cuyo carácter central no hace nada ... veamos:Por lo tanto, la segunda mitad del programa deshace exactamente la primera mitad y terminamos con la entrada en la parte superior de una
-1
vez más.El programa inverso es
:I>-<I:
. Veamos cómo eso cambia las cosas:fuente
Lote, 34 bytes
Ecos (
ECHO.
) la entrada (%1
). El resto de la primera línea técnicamente redirigeSTDERR
a un archivo llamadoMER@
, pero esto no es impactante.La segunda línea está comentada (
REM...
).Invertido
Utiliza el modo aritmético del comando set (
SET /a
) para restar (-=
) la entrada (%1
) de una variable indefinida (a
) que es equivalente a0 - input
. Nuevamente, el resto de la primera línea técnicamente redirigeSTDERR
a un archivo llamadoMER@
, pero esto no es impactante.La segunda línea está comentada (
REM...
).fuente
Brachylog , 2 bytes
Brachylog entra implícitamente desde la izquierda y sale desde la derecha.
&
ignora cualquier cosa a la izquierda y pasa la entrada a la función hacia la derecha.ṅ
obliga a cada lado a ser versiones negadas el uno del otro.Pruébalo en línea
fuente
Triangular ,
87 bytesPruébalo en línea!
Sin golf:
Invertido:
Pruébalo en línea!
Versión anterior (8 bytes):
fuente