Votre tâche, si vous souhaitez l'accepter, consiste à écrire un programme générant un nombre différent de zéro (entier ou flottant). La partie délicate est que si j'inverse votre code source, la sortie doit être le nombre entier original nié.
Règles
Vous devez construire un programme complet . C'est-à-dire que votre sortie doit être imprimée sur STDOUT.
Les deux numéros doivent être en base 10 (leur sortie dans une autre base ou avec une notation scientifique est interdite).
La sortie des nombres avec des espaces de fin / fin est autorisée.
C'est du code-golf, donc le code le plus court (original) dans chaque langue gagne!
Les failles par défaut s'appliquent.
Exemple
Disons que votre code source est ABC
et que la sortie correspondante est 4
. Si j'écris à la CBA
place et l'exécute, la sortie doit être -4
.
la source
-
unique (0x45 = 0b00101101) fonctionne dans Jelly - renvoie-
-1 puisqu'il définit le littéral -1, tandis queṆ
(0xB4 = 0b10110100) donne 1 puisqu'il effectue une non logique de l'entrée implicite de zéro. (Bien sûr, celaṆ
fonctionne aussi bien: p)Réponses:
05AB1E , 2 octets
Essayez-le en ligne!
! enilno ti yrT
la source
JavaScript (V8) , 19 octets
Essayez-le en ligne!
presque identique à ...
C # (compilateur interactif Visual C #) , 19 octets
Essayez-le en ligne!
(merci à quelqu'un pour l'avoir signalé)
toujours à peu près la même chose dans
Lua , 19 octets
Essayez-le en ligne!
mais plus court dans ...
Python 2 , 15 octets
Essayez-le en ligne!
Encore plus court en PHP, car il possède cet outil d'impression magique:
<?=
...PHP , 12 octets
Essayez-le en ligne!
Encore plus court dans Ruby, parce que vous pouvez
inspect
plutôt que d'imprimerRuby , 8 octets
Essayez-le en ligne!
la source
Print(1)//)-1(tnirP
. ( Essayez-le en ligne! )class A{static void Main(){System.Console.Write(1);}}//}};)1-(etirW.elosnoC.metsyS{)(niaM diov citats{A ssalc
1<!--!<1-
(9 octets) avec HTML, qui sera-1<!--!<1
inversé. Cela fait exactement la même chose que votre réponse.print(1)--)1-(tnirp
PowerShell ,
43 octetsEssayez-le en ligne! ou ! enilno ti yrT
Golfé un octet en utilisant l'arithmétique au lieu du format numéro-commentaire-numéro.
C'est apparemment aussi pareil que jshell (par Sam ), et jq (par manatwork -
1-0
et0-1
).la source
1-0
0-1
/// , 4 octets
Sorties
9
.Essayez-le en ligne!
Renversé:
Sorties
-9
.Essayez-le en ligne!
Tout ce qui précède
/
est imprimé, tandis que le reste est ignoré (les barres obliques sont peu utilisées, donc je ne sais pas exactement ce qui se passe, mais rien ne s'affiche).la source
/
commence le processus de lecture de modèle, et donc, les caractères après qu'il est lu dans le modèle, pas émis./\-//1-
et pensais que j'étais intelligent. : DKlein 011, 5 octets
Essayez-le en ligne!
Renversé
Essayez-le en ligne!
Celles-ci tirent parti de la topologie unique de Klein, en particulier du véritable plan projectif. (Bien qu’individuellement, chaque réponse nécessite seulement une bouteille de Klein).
la source
Espaces blancs , 21 octets
Lettres
S
(espace),T
(tabulation) etN
(nouvelle ligne) ajoutées uniquement en surbrillance.Sorties
1
/-1
.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 inversé 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
.la source
T-SQL, 16 octets
Choisi 4 parce que 1 est trop utilisé :)
la source
select 1#1-tceles
(17 octets). Vous pouvez consulter le résultat sur sqlfiddle.com/#!9/9eecb/107825 .Japt , 2 octets
Tout entier à un seul chiffre
>0
peut être utilisé à la place du2
comme peutA-G
,H
,I
,J
ouL
(10-16
,32
,64
,-1
et100
, respectivement).Testez le | Renversé
La
n
méthode, lorsqu'elle est appliquée à un entier, soustrait cet entier de l'argument qui lui est transmis, qui est la valeur par défaut0
. Lorsqu'elle est exécutée vers l'avant, lan
méthode est en cours d'exécution sur la première entrée implicite, dont la valeur par défaut est également0
.Alternativement, la
g
méthode pourrait être utilisée à la place den
, ce qui donne le signe du résultat de la soustraction de son argument du nombre entier auquel il est appliqué.la source
Haskell sans commentaires, 41 octets
Impressions vers l'avant
1
+ nouvelle ligne:Essayez-le en ligne!
Impressions inversées
-1
sans nouvelle ligne (pouvant être ajoutées au coût de 2 octets):Essayez-le en ligne!
-1
chaînes, la sortie est utilisée pour éviter les parenthèses.$!
(application stricte) au lieu d'un espace permet à la ligne inversée d'être une définition valide de l'opérateur!$
($
ce n'est tout simplement pas le cas, car la redéfinition briserait l'utilisation).niam
est défini pour la dernière ligne.!$
, qui n'est pas utilisé mais qui doit être analysé et vérifié correctement.la source
PHP ,
15 à13 octetsUne version de PHP sans abus de commentaires.
ohce
est une constante non définie, elle sera donc égale à la valeur chaîne de son nom. En conséquence, ceci essaiera d’imprimer+1-'ohce'
ou-1+'ohce'
lorsqu’il sera inversé. Comme il'ohce'
s'agit d'une valeur non numérique, 0 sera utilisé à la place dans les opérations arithmétiques et seul1
ou-1
sera imprimé.Essayez-le en ligne!
Essayez-le en ligne!
la source
Google , 3 octets
Essayez-le en ligne!
! enilno ti yrT
la source
Gelée , 2 octets
Essayez-le en ligne!
N
égatif, résultats en0
, puisC
complément, résultats en1-0
=1
.Essayez-le en ligne!
C
Complément, résultats1-0
=1
.N
égatif, résultats en-1
.la source
K (ngn / k) , 3 octets
Essayez-le en ligne!
est-ce que je manque quelque chose? semble évident pour les langues REPL
la source
Cubix ,
765 octetsEssayez ici
inversé
Explication
Cubifié:
En déroulant le flux de contrôle, nous exécutons ce
)O(@
qui incrémente, produit, décrémente et quitte.Renversé et cubifié:
En déroulant le flux de contrôle, nous exécutons ce
(O)@
qui décrémente, affiche, incrémente et quitte.La version précédente
Essayez ici
inversé
Pas aussi court, mais esthétique.
la source
@)O(@
pour 5 octets et restauration de la symétrie :)Enchantements runiques , 4 octets
Essayez-le en ligne! Essayez-le inversé!
Je ne pouvais pas trouver un moyen de réutiliser la
1
commande, même au détriment d'un octet ou deux.1@ɩ
fonctionne également, mais est le même nombre d'octets.la source
APL (Dyalog Unicode) ,
4 à3 octetsEssayez-le en ligne!
Réponse triviale. Imprime
1
quand exécuté et¯1
quand exécuté inversé.la source
Stack Cats
-mn
, 4 octetsEssayez-le en ligne! Dans le pied de page, j'ai inclus toutes les autres solutions à 4 octets. (Stack Cats ignore tout après le premier saut de ligne.)
Essayez l'inverse!
Explication
L’
-n
indicateur active la sortie numérique (et l’entrée, mais nous n’en avons aucune), et l’-m
indicateur n’est en principe qu’une commodité permettant de jouer au golf, ce qui vous permet d’éviter la partie redondante du code source. En effet, chaque programme Stack Cats doit avoir une symétrie miroir. Avec le-m
drapeau, vous ne lui donnez que la première moitié (plus le personnage central). Le programme actuel est donc le suivant:Comme vous pouvez le constater dans le premier lien TIO, il existe une tonne de solutions à 4 octets, mais j’ai choisi celle-ci pour sa simplicité. Stack Cats est basé sur une pile et ce programme utilise uniquement la pile initiale. Comme nous n’avons aucune entrée, il contient un seul
-1
marqueur (un marqueur EOF) au-dessus d’un nombre infini de zéros. Les trois commandes du programme ont la signification suivante:Voici donc comment le programme modifie la pile (les états et les commandes sont décalés pour indiquer comment chaque commande modifie la pile d’un état à l’autre):
Il s’avère que la seule commande qui fait vraiment quelque chose ici est celle
_
qui transforme notre marqueur EOF en a1
. La sortie à la fin du programme est implicite, et le marqueur EOF est facultatif, donc cela affiche simplement le1
obtenu.Maintenant, si nous inversons le code source, en raison de la mise en miroir implicite, le programme actuel devient:
Cela fait quelque chose de très différent:
Cette fois le bas de la pile est encore un
-1
donc il fait office de marqueur EOF et seul-1
le dessus est imprimé....
Cela dit, étant donné que Stack Cats a une relation unique avec le code inversé, j’estime que l’utilisation
-m
est un peu de la triche. Normalement, il s'agit uniquement d'économiser des octets en omettant la partie redondante du code source, mais ici, le défi est beaucoup plus simple et le programme complet plus court. En effet, inverser un programme complet ne changera le programme que s’il en contient<>[]
, ce qui signifie également que le programme finit par utiliser plusieurs piles (Stack Cats possède en fait une bande de piles où toutes, sauf la première, ne sont remplies). avec des zéros pour commencer). De plus, l'inverser puis simplement échanger les paires<>
et[]
, ce qui rend l'exécution toujours symétrique. Le seul moyen de briser cette symétrie est d’utiliserI
ce qui fait-]
ou-[
ou rien selon le signe du haut de la pile. Alors...Stack Cats
-n
, 11 octetsEssayez-le en ligne! Le pied de page inclut à nouveau toutes les autres alternatives au même nombre d'octets. Certaines de ces sorties 1 / -1 et d'autres 2 / -2 comme indiqué après chaque programme. J'ai choisi celui-ci pour expliquer un peu au hasard en tant que l'un de ceux qui produisent 2.
Essayez l'inverse!
Explication
Comme je l'ai dit, celui-ci est un peu plus long. Même si nous utilisions la
-m
notation pour cela, cela pèserait 6 octets au lieu de 4 ci-dessus.Les commandes utilisées cette fois-ci:
Le premier programme utilise seulement deux piles. C'est un peu brouillon à faire en ASCII, mais je vais faire de mon mieux. Les crochets indiquent la pile sur laquelle se trouve la tête de lecture et je vais placer les commandes entre chaque paire d'états de pile.
Maintenant, le
-1
fait office de marqueur EOF et le2
est imprimé.L’autre programme est le même jusqu’à ce que le
[
. C'est pratiquement le même jusqu'à la secondeI
. Techniquement, nous serons sur une pile différente, mais sans valeurs, elles sont toutes indiscernables. Mais alors la différence entreI[
etI]
finit par compter:Et cette fois, nous n’avons pas de marqueur EOF, mais le programme affiche toujours le fichier
-2
.la source
Zsh , 12 octets
Essayez-le en ligne!
Avance de base, commentaire, méthode inverse.
Si les E / S sont moins restrictives, une solution plus intéressante à 11 octets est possible grâce à Zsh prenant en charge les codes de retour négatifs:
Renversé,
721- nruter
quitte avec du code127
(commande introuvable).exit -127
ne peut pas être utilisé, il serait jeté àu8
. Essayez-le en ligne!la source
CJam , 3 octets
Essayez-le en ligne!
Comment ils travaillent
Version normale:
Version inversée: vous avez l'idée.
la source
MATL , 3 octets
Essayez-le en ligne!
Comment ils travaillent
Ordinaire:
Renversé:
la source
Wolfram Language (Mathematica) ,
2118 octetsEssayez-le en ligne!
-3 grâce à Martin Ender
la source
Hexagonie , 5 octets
Essayez-le en ligne!
Tout programme valide doit:
@
ou:
). Le dernier n'est différent pour le premier que lorsqu'il existe une commande de déplacement du pointeur de la mémoire. De plus, cette commande ne doit pas être au premier ou au dernier octet.!
,;
est également possible mais prendrait probablement plus d'octets)Par conséquent, un programme de 2 octets est évidemment impossible. Un programme de 3 octets est impossible car le deuxième octet doit être la commande de terminaison et que le premier octet ne doit pas être une commande de manipulation miroir / IP. Par conséquent, un seul octet peut être exécuté.
Je pense qu'un programme de 4 octets n'est pas possible. Un tel programme doit avoir la forme
a@bc
avec grille hexagonalePar conséquent,
a
doit être une commande de redirection IP. Cependant, il est impossible de générer des nombres positifs et négatifs avec une seule commande de manipulation de mémoire.la source
Haskell , 28 octets
Essayez-le en ligne!
Essayez-le enilno!
la source
Triangulaire , 4 octets
Essayez-le en ligne!
Sorties 1.
Ungolfed:
Renversé:
Essayez-le en ligne!
Sorties -1.
la source
Java 5 ou 6,
12767 octetsSorties
9
/-9
.Pas de compilateur en ligne, car Java 5 ou 6 n'est disponible nulle part.
Vous pouvez toutefois essayer cet équivalent de 127 octets Java 8:
Essayez-le en ligne ou essayez-le en ligne inversé .
Explication:
Java 5 et 6 présentaient un bogue qui vous permettait de créer un bloc de code dans une énumération afin de faire quelque chose, même s'il manquait la méthode principale obligatoire d'un programme. Cela entraînera une erreur:
Mais restera toujours ce que nous voudrions commencer par STDOUT, afin que nous puissions l'ignorer .
la source
Golang , 109 octets
Et son revers:
Essayez-le en ligne!
la source
Println
peut êtrePrint
, etimport "fmt";
n'a pas besoin de l'espace:import"fmt";
. :)Perl 5 (-p), 12 octets
Essayez-le en ligne!
! enilno ti yrT
Le
}{
pseudo-opérateur est vraiment utile.Perl 5 (-M5.010), 9 octets
Fourni par Nahuel Fouilleul dans un commentaire
Essayez-le en ligne!
! enilno ti yrT
la source
say 1#1-yas
say+1-yas
etsay-1+yas
Retina , 6 octets
Impressions
1
.Essayez-le en ligne!
Impressions
-1
.Essayez-le en ligne!
Explication:
1
Ceci ... ne fait rien. En raison de
`
, il s'agit d'une substitution de<
à-
(avec la configuration-
, qui ne fait rien), mais l'entrée est vide, donc la sortie est également vide.Et cette deuxième étape met en correspondance la regex vide avec l'entrée vide et compte le nombre de correspondances, qui est exactement 1. La sortie est implicite.
Explication:
-1
Cette fois, nous remplaçons la regex vide par
-
. Cela transforme en effet l'entrée vide en un seul-
.Ici, la configuration fait réellement quelque chose:
<
imprime les entrées de la scène avant de les exécuter, nous imprimons donc la-
. Puis-
compte les traits d'union dans l'entrée de la scène qui est encore 1. En raison de la sortie implicite, ceci affiche un1
après le-
, nous donnant-1
au besoin.la source
la source
brainfuck , 156 octets
Essayez-le en ligne! / Vérificateur avant / arrière dans Bash
Imprime en
-1
avant et en\n1
arrière.En dépit d'être presque trivial, je crois que c'est la solution optimale pour cette sortie fixe particulière.
Preuve:
Le programme ne peut pas avoir
[
ou]
.Par conséquent, le programme doit avoir la forme
<A> . <B> . <C>
.Chacun
,
peut être remplacé par un nombre suffisant de<
sans augmenter le nombre de+
ou-
.Chacun
+
n’est utile que dans le programme en amont ou en aval, jamais les deux.Preuve:
+
dans la partie A, ce n’est évidemment utile que dans le programme en aval, et+
dans la partie C, dans le programme en arrière.Indiquer⟺ ⟺
shift(P)
= nombre de<
dans P - nombre de>
dans P. Envisager programme<B> = <D> + <E>
,+
le milieu est utile dans le programme suivantshift(E) = 0
de même, il est utile dans le programme en arrièreshift(D) = 0
. Toutefois, sishift(D) = shift(E) = 0
le programmeB
exécuté en avant ou en arrière ajoute une valeur fixe à la cellule en cours avant la deuxième impression, ce qui ne peut pas être le cas carord('1') - ord('\n') != ord('1') - ord('-')
.Par conséquent, le programme nécessite au moins
ord('-')+ord('1')+ord('\n')+ord('1') = 153
+
s, 2.
s et au moins un<
>
ou,
parce queshift(B) != 0
.la source