Blatant arnaque d'une arnaque . Allez upvote ceux-ci!
Votre tâche, si vous souhaitez l'accepter, consiste à écrire un programme / une fonction qui génère / retourne son entrée / argument entier. La partie délicate est que si j'inverse votre code source, la sortie doit être le nombre entier original nié.
Exemples
Disons que votre code source est ABC
et son entrée est 4
. Si j'écris à la CBA
place et l'exécute, la sortie doit être -4
.
Disons que votre code source est ABC
et son entrée est -2
. Si j'écris à la CBA
place et l'exécute, la sortie doit être 2
.
Une entrée de 0
peut donner 0
ou -0
, cependant, si vous supportez zéro signé, -0
devrait donner 0
.
Réponses:
PowerShell ,
18 à14 octetsEssayez-le en ligne! ! enilno ti yrT
Première des réponses triviales d'abus de commentaires
la source
J , 3 octets
Essayez-le en ligne!
-&0
est "argument moins 0"0&-
est "argument moins 0"la source
][-
etc.JavaScript, 11 octets
Essayez-le en ligne! | Renversé
la source
code machine x86, 3 octets
Les octets de code ci-dessus définissent une fonction qui n'est pas une opération: elle rend simplement le contrôle à l'appelant. Cette fonction est suivie de deux octets parasites qui ne seront pas exécutés, car ils viennent après un retour - ils sont dans le "no man's land". En mnémonique assembleur:
Bon, alors maintenant un troll passe et inverse l'ordre des octets:
Ces octets définissent maintenant une fonction qui prend un argument entier dans le
EAX
registre, le nie et rend le contrôle à l'appelant. En mnémonique assembleur:Alors… c'était simple. :-)
Notez que nous pouvons faire que l'instruction "négation" soit ce que nous voulons, puisqu'elle n'est jamais exécutée dans l'orientation "en avant" et uniquement dans l'orientation "inversée". Par conséquent, nous pouvons suivre le même schéma pour faire des choses arbitrairement plus compliquées. Par exemple, prenons ici un argument entier dans un registre différent (par exemple,
EDI
pour suivre la convention d'appel System V couramment utilisée sur les systèmes * nix), le nier et le retourner dans leEAX
registre conventionnel :↓
la source
Gelée , 2 octets
Essayez-le en ligne! et son revers .
la source
ḷN
, pas besoin de la logique OU. : DNa
, les mots donnentaN
un effet esthétique :)Haskell , 8 octets
Fonction d'identité anonyme, se transformant en soustraction de
0
lorsqu'elle est inversée.Essayez-le en ligne!
Renversé:
Essayez-le en ligne!
la source
Espaces blancs , 48 octets
Lettres
S
(espace),T
(tabulation) etN
(nouvelle ligne) ajoutées uniquement en surbrillance.Modification mineure de mon Whitespace answer car je inverse le code source, vous annulez la sortie! défi .
Essayez-le en ligne ou inversez-le en ligne (avec des espaces bruts, des onglets et des nouvelles lignes uniquement).
Explication:
Utiliser le programme de sortie intégré étant un palindrome court
NNN
.Le programme régulier va:
Le programme inverse va:
Petite explication supplémentaire de pousser un nombre:
S
: Activer la manipulation de pileS
: Pousser un nombre à la pileS
ouT
: positif / négatif respectivementS
/T
suivis d’un dernierN
: nombre en binaire, oùS=0
etT=1
C'est à dire
SSTTSTSN
pousse-10
. Pour le,0
nous n’avons pas besoin d’un expliciteS=0
, donc tout simplementSSSN
ouSSTN
c’est suffisant.la source
Perl 6 / Raku, 3 octets
Essayez-le en ligne!
Crée un bloc de code quel que soit. Lire normalement son équivalent de bloc standard est
-> \x {x - 0}
, mais inversement il devient-> \x {0 - x}
.la source
C (clang) , 23 octets
Essayez-le en ligne!
la source
Brain-Flak , 7 octets
Essayez-le en ligne!
Renversé:
Essayez-le en ligne!
Remarque: Ne fonctionne que dans les interprètes prenant en charge les commentaires (par exemple, fonctionne dans Rain-Flak, mais pas dans BrainHack)
Si nous échangeons également les crochets d’ouverture / fermeture au lieu d’inverser simplement les octets, nous pouvons le faire en 8 octets sans utiliser de commentaires:
Essayez-le en ligne!
Essayez-le inversé!
la source
#
démarre un commentaire, les parenthèses de la version d'origine sont donc ignorées.Labyrinthe / Hexagone , 6 octets
Labyrinthe:
Essayez-le en ligne! et son revers .
Hexagone:
Essayez-le en ligne! et son revers .
Comment?
la source
Python 3 , 22 octets
Essayez-le en ligne!
Un lambda qui implémente la fonction d'identité (ou négation)
la source
MarioLANG , 22 octets
Essayez-le en ligne!
Il entre juste et sort le nombre avant qu'il tombe à EOF
renversé:
Essayez-le en ligne!
Il boucle jusqu'à ce que la valeur d'entrée soit 0 et que la valeur de sortie soit -input, il dit le nombre.
la source
R , 23 octets
J'ai décidé de tenter le coup sans l'astuce de commentaire.
Vers l'avant
Essayez-le en ligne!
Sens inverse
Essayez-le en ligne!
Dans la version en
+
aval agit un opérateur binaire, et-
est un opérateur unaire.À l'inverse, le
+
devient unaire et le-
est binaire. Donc, la fonction scan prend les arguments:file=""
ce qui signifie stdin etwhat=0
, qui sont aussi des valeurs par défaut. Ainsi, lorsque le+
paramètre est unaire, le premier argument est à droite, lorsqu'il est binaire, le premier argument est à gauche.le
une partie du code ne fait rien de vraiment utile, donc dans un sens, mon code n’est pas vraiment beaucoup plus valable que le commentaire.
la source
+
redéfini pour être utilisé à la fois unaire et binaire. Il m'a fallu une minute pour comprendre comment cela avait été analysé… Aucun autre nom d'opérateur n'aurait fait le travail.Haskell, 12 octets
Essayez-le en ligne! Sens inverse:
Essayez-le en ligne!
Pas aussi courte que la réponse de Ørjan Johansen , mais sans commentaires.
la source
Perl 5 (
-p
),76 octets-1 grâce à @primo
TIO
Un commentaire ne change pas l'entrée
Nier l'entrée
TIO
la source
$_*=$#
TIO . Notez que le#
doit être le tout dernier octet du programme, sinon il sera interprété comme la variable$#
plutôt que le dernier index du tableau nommé <vide>.$#
donne une erreur (si # n'est pas le dernier caractère) ou rien-p
ou-n
. Je soupçonne que quelque chose a boilerplate faire avec ...-p/-n
ajoute un;
après le code. Ce qui signifie que$#
c'est en réalité$#;
: la taille du tableau@;
. Si la taille des@;
modifications change, le résultat n'est plus correct ( TIO ). Quoi qu'il en soit, c'est super intelligent, bravo! :)perl -MO=Deparse -p <(echo -n '$_*=$#')
, car il sembleperl -MO=Deparse -pe '$_*=$#'
ajouter une nouvelle ligneGaia , 2 octets
Essayez-le en ligne!
Renversé:
la source
Revers ,
65 octetsEssayez-le en ligne! Essayez-le doublé!
Fait un peu complexe en raison de la nature du pointeur dans le revers.
Je ne pense pas qu'il soit possible d'avoir unhahaplus court, je me suis trompé. Cela ne duplique aucune instruction et réutilise les commandes d’entrée, de sortie et de fin entre les deux programmes. Maintenant, je pense que c'est optimal, car toutes lesIO-@
commandes doivent fonctionner, et dans un programme de 4 octets, vous ne pouvez exécuter que deux de ces commandes.Explication:
Le pointeur de Backhand déplace une coche sur trois cellules et rebondit sur les limites de la cellule, ce qui signifie que la logique générale se chevauche. Cependant, vous pouvez manipuler cette vitesse avec les commandes
v
et^
.Le programme d'origine exécute les instructions
IO-@
, qui sont entrées sous forme de nombre, sorties sous forme de nombre, soustraction, terminées. Évidemment, la soustraction est superflue. Dans le code, ce sont:Le programme inversé s'exécute
v-I-vO-@
. Lev
réduit les pas de pointeur entre les ticks, et les-
soustrait du bas de la pile, ce qui est implicitement zéro. Les-
commandes supplémentaires ne font rien. Le programme s'exécute commela source
Wolfram Language (Mathematica) , 9 octets
Essayez-le en ligne!
En avant: read
((1)&*0+#-0)&*1
=#&
En arrière: lire
((1)&*0-#+0)&*1
=-#&
la source
R , 14 octets
Essayez-le en ligne!
Un programme complet qui lit un nombre ou lit et nie un nombre. La fonctionnalité inverse est protégée par un commentaire en ligne
la source
Python 3 ,
2214 octetsEssayez-le en ligne!
Utilise le
int
constructeur de la classe et une méthode pseudo-privée intégrée.la source
0.
serait interprété comme un nombre, suivi d'un symbole05AB1E , 2 octets
Essayez-le en ligne!
Renversé
la source
Befunge-98 (FBBI) , 6 octets
Essayez-le en ligne! Essayez-le inversé!
la source
APL (Dyalog Unicode) ,
133 octetsEssayez-le en ligne!
Réponse triviale. Retours
arg
ou¯arg
.Sauvé 10 octets en n'étant pas stupide (merci Adám).
Modifié le 3-octet résultant en une fonction plus adaptée.
la source
Langage machine de Turing , 39 octets
Le positif
Le négatif
Celui-ci était un peu plus compliqué que je ne le pensais, principalement parce que je devais dépasser mes préjugés d'avoir un code qui fonctionne avec des erreurs de 'compilation'.
la source
> <> ,
54 octetsutilise l’initialisation de pile avec l’
-v
option, placez-y votre variable d’entrée.Essayez-le en ligne!
Ou essayez l'inversion
Explication
la source
Stack Cats
-mn
, 2 octetsEssayez-le en ligne!
Essayez l'inverse!
Explication
Il s'avère que c'est en réalité beaucoup plus facile que le défi précédent dans Stack Cats. Le programme complet (après application
-m
) est ici-X-
.X
est utilisé pour échanger les piles gauche et droite de la tête de bande, c’est-à-dire que cela n’affecte en rien la pile initiale, nous pouvons donc l’ignorer. Mais alors, le programme est effectivement juste--
(annule le haut de la pile deux fois), ce qui ne fait rien.Pour le programme inverse, appliquer
-m
donne donneX-X
. Encore une fois,X
ne fait rien, donc le programme est effectivement juste-
, ce qui annule le sommet de la pile.La seule autre solution à 2 octets est
-=
, mais c'est pratiquement la même chose. La seule différence est que=
seuls les sommets des piles adjacentes sont échangés, et non les piles entières.Mais encore une fois, utiliser
-m
est un peu comme tricher, voici donc une solution qui utilise un programme totalement en miroir.Stack Cats
-n
, 7 octetsEssayez-le en ligne!
Essayez l'inverse!
Explication
Les considérations de la réponse précédente sont toujours valables : toute solution valable doit utiliser les caractères et les paires
I
. Les six solutions possibles (incluses dans le lien TIO) sont pratiquement les mêmes.-
et_
sont équivalents dans ce programme, et:
peuvent être remplacés par|
ouT
(qui font la même chose pour des entrées non nulles et qui fonctionnent également pour des entrées nulles). Je viens de choisir celui-ci pour expliquer parce que c'est le plus facile.Donc, rappelez-vous que la pile initiale contient l’entrée au-dessus d’un
-1
nombre infini de zéros, alors que toutes les autres piles de la bande ne contiennent que des zéros. Stack Cats a également pour caractéristique que tout programme de longueur égale ne fait rien (à condition qu'il se termine, mais nous ne pouvons pas utiliser de boucles pour ce défi de toute façon). La même chose est alors évidemment vraie pour tout programme de longueur impaire dont le personnage central ne fait rien ... voyons:Par conséquent, la seconde moitié du programme annule exactement la première moitié et nous nous retrouvons à nouveau avec l'entrée
-1
.Le programme inverse est
:I>-<I:
. Voyons comment cela change les choses:la source
Lot, 34 octets
Écho (
ECHO.
) l'entrée (%1
). Le reste de la première ligne est techniquement redirigéSTDERR
vers un fichier appeléMER@
, mais cela n’a aucun impact.La deuxième ligne est commentée (
REM...
).Renversé
Utilise le mode arithmétique de la commande set (
SET /a
) pour soustraire (-=
) l'entrée (%1
) d'une variable non définie (a
) équivalente à0 - input
. Encore une fois, le reste de la première ligne est techniquement redirigéSTDERR
vers un fichier appeléMER@
, mais cela n’a aucun impact.La deuxième ligne est commentée (
REM...
).la source
Brachylog , 2 octets
Brachylog entre implicitement à gauche et en sortie à droite.
&
ignore tout ce qui se trouve à gauche et passe l’entrée à la fonction à droite.ṅ
contraint chaque côté de celui-ci à être nié versions de l'autre.Essayez-le en ligne
la source
Triangulaire ,
87 octetsEssayez-le en ligne!
Ungolfed:
Renversé:
Essayez-le en ligne!
Version précédente (8 octets):
la source