Compte tenu d' une entrée de nombre entier non négatif, écrire un programme qui convertit le nombre en hexadécimal et retourne une valeur de truthy si la forme hexadécimale du nombre ne contient que des caractères A
par l' intermédiaire F
et une valeur de Falsey autrement.
Cas de test
10
==> True (A in hexadecimal)
100
==> False (64 in hexadecimal)
161
==> False (A1 in hexadecimal)
11259375
==> True (ABCDEF in hexadecimal)
0
==> False (0 in hexadecimal)
Bonus: -40 octets si votre programme imprime Only letters
pour le défi décrit ci-dessus, Only numbers
si la version hexadécimale du nombre ne contient que les chiffres 0-9
et Mix
si le nombre hexadécimal contient au moins un nombre et au moins une lettre.
C'est du code golf. Les règles standard s'appliquent. Le code le plus court en octets gagne. Les fonctions ou les programmes complets sont autorisés.
code-golf
number
base-conversion
hexadecimal
Arcturus
la source
la source
NaN
MixOnlynumbersletters
21 caractèresRéponses:
Pyth, 43 - 40 = 3 octets
Suite de tests
Cela réalise le bonus.
Only numbers
etOnly letters
heureusement, ne diffèrent que de 4 lettres. Le formatage de style printf est utilisé avec%
.Le système de sélection est fait en prenant l'intersection de l'hex avec
G
l'alphabet et en soustrayantG
. Si aucune des deux ne finit par être faussée, c'est un mélange, alors que si l'intersection est faussée, ce sont des nombres et si la soustraction est faussée, ce sont des lettres.la source
Pyth, 6 octets
Testez-le ici
la source
Gelée , 6 octets
Essayez-le en ligne!
Comment ça marche
la source
TeaScript , 11 octets
13 15 16Assez simple. Ceci utilise TeaScript 2.0. Vous pouvez obtenir cette version du Github
Explication
Essayez-le en ligne (version légèrement modifiée qui fonctionne sur le Web)
la source
Python, 24 octets
Convertit l'entrée en chaîne hexadécimale (sans
0x
préfixe) avec'%x'%n
. Voyons si tous ses caractères sont supérieurs à'9'
(quelles lettres sont) en voyant si lemin
est au-dessus'9'
.la source
'9'
est 54. Donc si vous pouvez écrire,...>54
vous pouvez sauvegarder un octet.MATL , 10
Exemples
Explication
Bonus: 53−40 = 13
Exemples
Explication
la source
LabVIEW, 52-40 = 12 Primitives LabVIEW
Féliciter les intégrés!
la source
C,
464337 octetsMaintenant avec plus de récursivité! (Merci Dennis):
Bonus: encore plus court (33 octets), mais échoue pour
x = 0
:F()
prend unint
et retourne soit0
(faux) ou non nul (vrai).Je n'ai même pas essayé d'obtenir le bonus, ne
"MixOnly lettersnumbers"
prend que 23 octets; suivre la nouvelle condition aurait nécessité 9 octets supplémentaires,printf()
soit 8 octets, soit 40 octets, annulant ainsi l'effort.Test principal:
la source
?:
? Je devais le remplacer par||
pour le compiler. Aussi, pouvez-vous sauvegarder un octet en remplaçant le*
par un&
évitant ainsi le()
s à gauche (bien que vous deviez ensuite ajouter un espace)?a?:b
est une extension GNU qui évaluea
si ifa
est une valeur de vérité, sinon àb
. Est pratique pour gérer les pointeurs nuls commesend(message ?: "(no message)");
. Je sais que ce n'est pas portable, mais la portabilité du code n'est jamais une préoccupation dans le code golf :)33
octets:F(x){x=(x%16>9)*(x<16?:F(x/16));}
ceci abuse d'un bogue (GCC) dans lequel s'il n'y a pas de variable de retour dans une fonction et que l'argument principal a été défini, il retournera automatiquement l'argument principal dans certains cas ( sur la base de quelle logique a été faite), et cela se trouve être un de ces cas! Essayez-le en ligne: bit.ly/2pR52UHPython 3,
3029 octets1 octet supprimé grâce à sysreq et à Python 3.
Simple
lambda
et tranchant.la source
Perl 6 , 18 octets
usage:
la source
Mathematica, 32 octets
Explication:
la source
Javascript, ES6, pas d'expressions rationnelles, 28 octets
Il y a aussi cette version à 27 octets, mais elle retourne la valeur inverse.
la source
F=n=>!n||n%16>9&F(n>>4)
F=n=>n%16>9&&n<16|F(n>>4)
alors.||
, mais je pense que vous pourriez vous en tirer en utilisant&
plutôt&&
que dans ce cas.Julia, 18 octets
C'est une fonction anonyme qui accepte un entier et retourne un booléen. Pour l'appeler, donnez-lui un nom, par exemple
f=n->...
.L'entrée est convertie en chaîne hexadécimale en utilisant
hex
, puis nous vérifions si elle est entièrement composée de caractères alphabétiques en utilisantisalpha
.la source
JavaScript ES6, 29
Pas de bonus
Avec la nouvelle valeur de -40, le bonus est plus proche maintenant ... mais pas assez. Bonus score 70
71- 40 => 3031Extrait de test (tapez un nombre dans la zone de saisie)
la source
-n-1
=~n
, non?~n == -1
tandis que-n-1 == NaN
GS2 , 6 octets
Le code source utilise le codage CP437. Essayez-le en ligne!
Comment ça marche
la source
Octave, 22 octets
la source
Java,
464438 octetsUne ligne assez simple qui convertit le nombre entier en chaîne hexadécimale et utilise regex pour déterminer si tous les caractères sont des lettres.
-2 octets grâce à @ Eng.Fouad.
la source
"[a-f]+"
économiserait 2 octets.+
, c’est un gaspillage d’octets.matches
renvoie true si la chaîne entière peut être mise en correspondance avec l'expression régulière donnée.[a-f]
sans le signe plus, il est incorrect car il ne correspond pas à la chaîne entière, car il contient plus d'un caractère. ce serait le cas si et seulement si un caractère valide est présent.CJam (
9 à8 octets)Démo en ligne
la source
{Gb$N<!}
Ruby, 19 octets
Ungolfed:
Usage:
Avec bonus, 70 - 40 = 30 octets
Usage:
la source
'%x'%n!~/\d/
vérification est plus courte pour la solution un, et la solution deux a un nombre d'octets brut de 70, et non de 75.Perl, 69 - 40 = 29 octets
la source
Ceylan, 55 octets
Simplement ... nous formaterons
n
un nombre hexadécimal (ce qui produira une chaîne), appellerons le.digit
nombre (qui retournera vrai s'il s'agit d'un chiffre), puis vérifions si l'un d'entre eux est vrai, puis le nier.La version avec bonus a un score beaucoup plus élevé de 119 - 25 = 94 :
Je ne sais pas comment quiconque pourrait créer une version bonus suffisamment courte pour être meilleure que la version sans bonus, même ces chaînes ont à elles seules une longueur de 28. Peut-être une langue qui rend vraiment difficile de produire une valeur de vérité / falsey.
Voici une version formatée:
la source
Rouille, 70 octets
Parce que tu sais,
JavaRust.C'est en fait assez élégant, cependant:
Mais il est dommage que la définition de la fonction passe-partout est si longue ....: P
la source
CJam, 44 octets - 40 bonus = 4 octets
Essayez-le ici ~
la source
Sérieusement, 12 octets
Décharge Hex:
Essayez-le en ligne
C'est la même chose que les réponses de l'autre langue. Ce ne serait que 7 octets si Sérieusement supportait encore la soustraction de chaînes.
EDIT: Sérieusement prend maintenant en charge la soustraction de chaînes et la solution suivante de 7 octets fonctionne désormais:
Décharge Hex:
Essayez-le en ligne
la source
4╙,¡#S;ú∩S=
(ou4ª
ou8τ
, beaucoup d'orthographes:16:
sur deux octets: P)05AB1E , 2 octets (non concurrents)
Code:
Ha! C'est deux octets! Malheureusement non compétitif car cette langue postdate le challenge :(
Explication:
Essayez-le en ligne! ou Vérifiez tous les cas de test!
la source
hdÔ©1åi•4?ŸâτΛ•}®0åi•4?ŸàpÕTà•}®g2Qi•²
•} 36B` pour le bonus résultant en ... 6 autres! Wooooo bonus!Python 3, 28 octets
la source
Common Lisp, 40 octets
Essayez-le en ligne!
la source
SmileBASIC 3.2.1, 78 octets
la source
81
.0-127
, ainsi votre nombre d'octets est81
.Japt, 12 octets
Essayez-le en ligne!
Comment ça marche
la source
!!UsG r"\\d
pourrait fonctionner et économiser un octetGema, 41 caractères
Il n'y a pas de booléen dans Gema, donc il génère simplement «t» ou «f».
Échantillon échantillon:
la source