Convertissez un nombre hexadécimal (de n'importe quelle taille) en nombre binaire.
Entrez
un nombre hexadécimal POSITIF avec un 0x
au début. Une entrée valide correspond toujours à l'expression rationnelle suivante: 0x[0-9a-fA-F]+
. Si l'entrée n'est pas un nombre hexadécimal valide, c'est-à-dire tout ce qui ne correspond pas à cette expression régulière, la sortie doit être 0
.
Sortie
L'hexadécimal converti en binaire.
Gagner les
règles originales du code de golf, le plus petit nombre de piqûres (bytes)
.
Exemples
IN: 0x12
OUT: 10010
IN: 0xFF
OUT: 11111111
IN: 0XFF
OUT: 0
IN: #0ac4
OUT: 0
IN: 0x00101011
OUT: 100000001000000010001
IN: 0x525600
OUT: 10100100101011000000000
IN: 0x58f70555118ec400
OUT: 101100011110111000001010101010100010001100011101100010000000000
IN: 0x6669795966AF3000
OUT: 110011001101001011110010101100101100110101011110011000000000000
IN: 0b018474
OUT: 0
IN: 9577383
OUT: 0
IN: -483355
OUT: 0
IN: -0xf9ad92
OUT: 0
code-golf
base-conversion
Hashim Kayani
la source
la source
#0ac4
toujours un cas de test valide?X
est en majuscule).00011010
Réponses:
Pyth, 15 octets
Explication:
Suite de tests
Avec une clarification des règles (qui
0x
doit être en minuscules) dans l'OP, vous pouvez supprimerr0
pour 13 octets.la source
Python 2,
67626059 octetsEssayez-le en ligne!
Version contenant des erreurs sur une entrée non valide (27 octets):
Essayez-le en ligne!
la source
05AB1E , 11 octets
Essayez-le en ligne!
Explication
la source
0XFF
.0x
donc je dirais que le cas de test spécifique est faux.Å?
ou 10 octets en utilisant toujours l'héritage .Lot, 402 octets
Prend entrée sur STDIN. 8 lignes sont alors principalement gaspillées lors de la validation des entrées, donc les lignes intéressantes sont la ligne 11, qui remplace chaque chiffre hexadécimal par son équivalent binaire, mais en raison des limitations du lot, avec une
.
ligne principale 12, qui supprime tous les.
s et la ligne 14 , ce qui supprime les premiers 0. Cependant, cela échoue pour les entrées comme0x0
"j'invalide" celles qui signifient que 0 est sorti à la place.la source
PHP,
66 6563 octetscourir comme tuyau avec
-F
.Sans le
0x
, le pire problème serait que les deuxhexdec
etbase_convert
simplement ignorer les caractères qui ne sont pas hex; mais avec cela, il doit y avoir un contrôle de validité explicite de toute façon.45 octets sans
0x
:la source
echo stristr($a=$argn,"0X")==$a?decbin(hexdec(ltrim($a,Xx0))):0;
Est-ce une belle alternative? Il devrait fonctionner pour les cas de test donnéshexdec
etbase_convert
).echo decbin(hexdec(preg_filter("#^0x([a-f\d]+$)#i","$1",$argn)));
<?=
lieu deecho
avec l'option -FJavaScript (ES6),
109108 octetsFonctionne pour n'importe quelle taille d'entrée.
Cas de test
Afficher l'extrait de code
la source
0x1fffffffffffff
- akaNumber.MAX_SAFE_INTEGER
- et retourne des résultats arrondis au-delà. Par chance, les deux grands cas de test sont arrondis correctement.1
bits du résultat. Au fait, avez-vous besoin$
de la première expression rationnelle?$
. L'idée est d'obtenir le zéro final s'il n'y a pas1
du tout dans le résultat.REXX, 45 octets
la source
Rétine , 149 octets
(notez la nouvelle ligne de fin)
Essayez-le en ligne!
Voici une solution alternative au prix de 7 octets: Essayez-la!
la source
perl, 25
(code 24 + 1 drapeau -n)
la source
JavaScript (ES6),
116111 octetsPas limité à 53 bits de précision. Edit: économisé 5 octets en réécrivant ma conversion de chiffres, ce qui réduit également mes exigences linguistiques à ES6.
la source
0x00101011
, désolé.Code machine 8086 - 63 octets
Fonctionne pour n'importe quelle entrée jusqu'à 125 caractères (la longueur de ligne de commande maximale sous DOS)
la source
JavaScript (ES6),
535249505245 octets(Non compétitif car il ne gère pas les entrées de toute taille; j'ai juste eu de la chance avec les entrées d'échantillon)
la source
CJam , 24 octets
Essayez-le en ligne!
Explication
la source
JavaScript (ES6), 107 caractères
la source
Perl 6 , 35 octets
la source
Javascript, 63 octets
la source