Lors de l'écriture de programmes de code-golf , je finis généralement par utiliser des constantes numériques. Je les mets toujours en décimal parce que c'est ce que je pense, mais je viens de réaliser que ma langue prend en charge d'autres formats numériques qui pourraient me permettre de raccourcir légèrement mon code.
Défi
Étant donné un entier non négatif inférieur à 2 ^ 53-1, décidez si cet entier a la représentation la plus courte dans:
- Décimal
- Hexadécimal
- Notation scientifique
Décimal
Comme il s'agit du format par défaut de ma langue, aucune notation supplémentaire n'est requise pour ce format. Chaque nombre est représenté comme d'habitude pour la décimale.
Hexadécimal
Mes langues utilisent le 0x
préfixe pour les constantes hexadécimales. Cela signifie que si un nombre a 4 chiffres hexadécimaux, il faudra 6 octets pour représenter ce nombre.
Notation scientifique
Ma langue utilise le format suivant pour la notation scientifique:
[Base réelle] e [Exposant entier de 10]
Par exemple, 700
serait représenté comme 7e3
, et 699
serait représenté comme 6.99e3
, car la base doit être comprise entre -10 et 10 (non inclus). Aux fins de ce défi, la base sera toujours au moins égale à 0, car le nombre entré n'est pas négatif.
Sortie
Vous devez renvoyer un moyen d'identifier le format le plus court (ie 0 pour décimal, 1 pour hex, 2 pour scientifique). Vous pouvez également générer la plus petite représentation du nombre lui-même.
Cas de test
Decimal | Hexadecimal | Scientific | Winner
--------------|--------------|-------------------|-------------
0 | 0x0 | 0e0 | Decimal
15 | 0xF | 1.5e1 | Decimal
6999 | 0x1B57 | 6.999e3 | Decimal
7000 | 0x1B58 | 7e3 | Scientific
1000000000000 | 0xE8D4A51000 | 1e12 | Scientific
1000000000001 | 0xE8D4A51001 | 1.000000000001e12 | Hexadecimal
1000000001000 | 0xE8D4A513E8 | 1.000000001e12 | Hexadecimal
1000001000000 | 0xE8D4B45240 | 1.000001e12 | Scientific
Notation
C'est du code-golf , donc la réponse dans les octets les plus courts pour chaque langue l'emporte.
double
. Juste une suggestion; faites comme bon vous semble
1000001000000
peut également être écrit comme 1000001e6
si.
2^63-1
peut être difficile pour certaines langues. Envisagez de relâcher cela à une valeur inférieure telle que2^32-1
(de sorte que les valeurs tiennent dans un type de données à virgule flottante double)