Lorsqu'un nombre est affiché sur une calculatrice, il est possible de considérer à quoi ressembleraient les différentes transformations de ce nombre. Par exemple, sur un affichage à sept segments, 2 s'affiche comme suit:
Et lorsqu'il est retourné horizontalement, il ressemble à ceci:
En tant que tel, l'image miroir de 2 est 5.
La tâche dans ce défi est de prendre un nombre à un chiffre et de renvoyer le numéro qui est son image miroir (si possible). Si son image miroir ne ressemble pas à un nombre, renvoyez le nombre pivoté de 180 degrés (si possible). Si aucun de ces éléments n'est le cas, retournez -1.
Voici la liste complète des entrées et sorties que votre programme doit gérer:
Input Output
0 0
1 -1
2 5
3 -1
4 -1
5 2
6 9
7 -1
8 8
9 6
En tant que défi de code-golf , le code le plus court gagne!
Réponses:
Haskell -
433143 personnages sans rien d'extraordinaire.
Je l'ai réduit à 31 caractères en en faisant une fonction partielle.
la source
f=
de la deuxième solution car c'est une expression valideGolfScript,
1514J'ai relu la spécification et j'ai constaté que l'entrée devait être une chaîne.
Courir:
Ancienne version (qui a une entrée entière):
Le plus récent (14 octets) est quelque peu inspiré par la réponse CJam d'Aditsu .
la source
PowerShell - 27
la source
Python 2.x - 28
la source
`
s et enregistrer 2 caractères.JavaScript
3736la source
.search()
et enregistrer un octet.CJam, 20 octets
Essayez-le en ligne.
Production
Comment ça fonctionne
la source
BEFUNGE 93 -
181420 octetsJe suppose que les commentateurs ont raison, bien que Befunge soit un langage 2d, c'est un peu différent. Pourtant, à cet instant, les commentateurs ont raison.
Pas:
Lit l'entrée sous la forme d'une valeur numérique x et la pousse sur la pile.
Obtient la valeur de caractère c (donc, comme '!' = 33, ou '*' = 42. Une cellule vide = 32) à la position x, 1.
Lit la valeur de caractère de la cellule 0,1 (33), la soustrait de c et la renvoie sous forme de valeur numérique.
la source
&1g'!-.
Java - 49
Ici,
0x790a300601
est une valeur bourrée des sorties souhaitées, avec une valeur ajoutée pour les rendre positives. Les valeurs sont stockées dans des quartets à l'intérieur de la valeur, donc un peu de décalage et de masquage est nécessaire pour les faire apparaître.Java - 100 (option amusante)
Pas la plus petite option, mais un peu de plaisir. J'ai trouvé une graine aléatoire qui produit les valeurs correctes lorsqu'elle est appelée X fois (où 0> = X <= 9).
la source
JavaScript (ECMAScript 6) 25
JavaScript (ECMAScript 5) 43
MISE À JOUR: edc65 a suggéré une bien meilleure technique. brosse à dents a suggéré une bien meilleure langue. À ce stade, mes principales contributions sont le débogage et la gomination.
la source
x=>[0,-1,5,-1,-1,2,9,-1,8,6][x]
.function(x)[0,-1,5,-1,-1,2,9,-1,8,6][x]
, également grâce à Firefox. Je n'allais pas gagner de toute façon, j'ai donc décidé de m'en tenir à la réponse la plus compatible. Si je commence à changer de langue par souci de concision, je finirai par commencer à définir ma propre langue pour chaque défi que je fais. Mais je vais quand même mentionner la version d'ECMAScript 6, puisque vous l'avez suggérée-(x!=6)
. Je vous remercie.f=
sauf si vous appelezf
récursivement ou que la question nécessite explicitement une fonction avec un nom spécifiquebash 29
par exemple
la source
'
expression autour de sed. Je pense aussi que vous pouvez omettre leg
car la spécification ne fournit qu'un chiffre à la fois'
. Aimer leg
pour une entrée plus longue!Kona - 29
Cette fonction renvoie l'élément
x
du tableau0 -1 5...
Exemples:
la source
JavaScript 36
3741comme fonction ES6 - 27:
la source
f=v=>~-[1,,6,,,3,10,,9,7][v]
Sclipting, 11 caractères
Enfin, j'ai trouvé un ordinateur Windows avec Visual Studio installé pour construire son interpréteur. Et il a facilement battu mon code GolfScript.
Il lit
18453063256\11\?/11%(
en GolfScript.la source
J -
2827 octetsTu sais ce que j'aime? Simplicité (28 octets). Notez que dans J,
_1
est négatif (-1).Ajoutez un peu de complexité et vous avez 27 octets.
Exemple:
la source
CJam - 14
Version entrée / sortie:
Version de la pile (suppose que le numéro est sur la pile):
Essayez-les sur http://cjam.aditsu.net/
la source
Perl,
2726Le nombre comprend le
p
drapeauUsage:
Attendez, Perl vient de battre J? :)
la source
y+0-9+9a4aa70a13+;$_=9-hex
, qui est de la même longueur, mais le vôtre est plus original;)echo 1 | perl -pe y/2569/5296/,s/[347]/-1/
Marbelous 34 octets
Ce n'est pas la solution la plus courte, mais ce n'est pas la plus longue non plus.
Comment ça fonctionne
}0
génère une bille représentant la première entrée de ligne de commande. Ce marbre descend la tique suivante, sur la=6
cellule.=6
est une cellule de comparaison, elle pousse toute bille de valeur 6 vers le bas et toutes les autres vers la droite. Cette gamme de cellules de comparaison pousse les billes vers la droite jusqu'à ce qu'elles égalent la valeur souhaitée. 0 et 8 tombent et s'impriment quand ils tombent du bas de la planche, 6 et 2, et 9 et 5 obtiennent d'abord 3 ajoutés à eux, soustraits d'eux respectivement. Si une bille ne correspond à aucune des valeurs souhaitées, elle atterrit sur la?0
cellule, ce qui transforme n'importe quelle bille en 0 bille 1 . Ce marbre est ensuite décrémenté et tombe du plateau.1 Une
?n
bille transforme techniquement n'importe quelle bille en bille entre 0 et n. Cela a le bel effet secondaire qui?0
transforme n'importe quoi en 0.la source
MATLAB - 35
Je voudrais envelopper cela dans une fonction avec
n
comme seul paramètre.35 caractères.
la source
ECMAScript 6, 24
En utilisant JavaScript normal, ce serait 33:
la source
TI-BASIC,
2422Cela code les sorties possibles dans une table de recherche stockée sous la forme d'un nombre à virgule flottante en base 11; le (N + 1) ème chiffre de base 11 après le point décimal est extrait du tableau pour obtenir la valeur du chiffre inversé. Dans la base 11, le nombre est
.106003A097
, et les chiffres de celui-ci sont exactement0,-1,5,-1,-1,2,9,-1,8,6
.L'astuce d'edc65 de soustraire un dans le cas de 6 conduit à cette solution de 24 octets, où
⑩^(
trouve un seul jeton d'un octet:L'approche chaîne est de 29 octets:
L'approche par tableau (qu'Ypnpyn a également adoptée) est de 30 octets, en supposant que le nombre est stocké dans X:
24 -> 22: Suppression de deux chiffres supplémentaires de précision dans la constante magique.
la source
C - 47 octets [au lieu de 48 octets]
Pour ajouter des E / S (que les autres réponses n'ont pas toujours) pour 86 octets:
la source
Python - 34
la source
f=lambda n:ord(" "[n])-3
Travailler avec Space Codeskulptor.org/#user34_Q7NbNvQy55_0.py	
moins 3 pour la raison que -1 laisse un caractère nul qui n'est pas bon, et moins 2 laisse unJava, 58
59OU
la source
JavaScript
4237Exécutez-le sur la console de votre navigateur
la source
C -
117108106 1067776 octetsPas la meilleure langue pour jouer au golf, mais bon ...
Compilez avec
gcc progname.c -o progname
. (Ignorez les avertissements ou ajoutez-include stdio.h
à la commande de compilation.)ÉDITER
Selon la suggestion de @ bebe, voici un exemple qui prend à la place l'entrée de STDIN:
C -
6851 octetsla source
d=*b[1]-48
pourrait être une bonne idéemain(){printf("%d",(int[]){1,0,6,0,0,3,10,0,9,7}[getchar()-48]-1);}
désolé de vous déranger autant mais je trouve cela un peu plus court.a[]={1,0,6,0,0,3,10,0,9,7};main(){printf("%d",a[getchar()-48]-1);}
main(){printf("%d","106003:097"[getchar()-48]-49);}
51 octetsJ (24, fonction)
(le panneau de saisie ne joue pas bien. Collez ce qui suit dans un interpréteur python et ma réponse sera révélée :)
la source
Clojure - 36
la source
05AB1E , 13 octets (non concurrents)
Essayez-le en ligne!
-3 merci à Emigna .
Explication:
la source
0®5®®Y9®8 6¹@
devrait également fonctionner.@
. Pas souvent, vous voyez que utilisé :))¹è
ou)sè
.PHP,
4839 bytesThanks to Jörg Hülsermann
Try it online!
Older versions
Try it online!
la source
Jelly, 14 bytes (non-competing)
Try it online!
Explanation:
la source
ịV = žh‡
in 05AB1E