Selon la page Wikipedia sur le nombre 69 , il est à noter que 69 2 = 4 761 et 69 3 = 328 509 utilisent ensemble tous les chiffres décimaux. Le nombre 69 est en fait le nombre le plus bas qui satisfait cette propriété.
Pour une raison similaire, 32 043 est remarquable: 32 043 2 = 1 026 753 849 utilise tous les chiffres décimaux.
Si nous voulons continuer à parler de nombres qui sont intéressants de cette façon, nous aurons besoin d'une notation.
Pour la plupart des entiers n , les puissances n 2 ,…, n k utiliseront les dix chiffres décimaux (sans compter les zéros non significatifs) au moins une fois pour des valeurs suffisamment grandes de k . S'il existe, nous appellerons le plus bas de ces k le CUDDLE ( CUmulative Decimal Digits, Least Exponent ) de n .
Tâche
Écrivez un programme ou une fonction qui accepte un seul entier non négatif n en entrée et calcule et renvoie son CUDDLE .
Si n n'a pas de CUDDLE , vous pouvez renvoyer autre chose qu'un entier positif, y compris une erreur ou une chaîne vide, tant que votre code s'arrête finalement.
Cas de test
La colonne de gauche est entrée, la colonne de droite est sortie.
0
1
2 15
3 10
4 10
5 11
6 12
7 7
8 5
9 6
10
11 7
12 6
13 6
14 7
15 9
16 5
17 7
18 4
19 5
20 15
26 8
60 12
69 3
128 3
150 9
200 15
32043 2
1234567890 3
Règles supplémentaires
Votre code doit fonctionner pour toutes les entrées jusqu'à 255 .
Notez que cela implique de traiter des nombres assez importants. 20 15 est déjà supérieur à 2 64 .
Si vous imprimez le résultat, il peut être suivi d'un saut de ligne.
Les règles de code-golf standard s'appliquent.
26->8
parce que c'est le plus petit exemple où notammentn^1
donne la mauvaise réponse (de6
), une erreur que j'avais commise dans mon code.Réponses:
Pyth, 16 octets
Essayez-le en ligne: démonstration ou suite de tests
Comme d'autres solutions, j'utilise 15 comme limite supérieure. Je crois que c'est aussi le câlin maximal . J'ai testé tous les nombres jusqu'à 10.000.000, et il n'y a pas de nombre avec un CUDDLE supérieur à 15.
Les nombres avec un CUDDLE > = 10 sont déjà assez rares. Les seuls nombres avec un câlin de 15 sont les nombres
2*10^k
. Il n'y a pas de nombres avec un CUDDLE de 14 ou 13, le CUDDLE 12 n'apparaît que pour les nombres6*10^k
, le CUDDLE 11 uniquement pour5*10^k
.Je pense donc que ce code fonctionne parfaitement pour n'importe quel nombre naturel.
Imprime un message d'erreur s'il n'y a pas de solution.
Explication:
la source
Python 2, 56
Une solution récursive. Compte les exposants à
i
partir de2
et accumule les chiffres des puissancesn**i
dans la chaînes
. Quands
a tous les dix chiffres, retourneTrue
, ce qui équivaut1
, et sinon revient et ajoute1
. Cela s'est avéré plus court que le retouri
.L'appel de la fonction sur un numéro sans CUDDLE se termine par
Internal error: RangeError: Maximum call stack size exceeded
. Les nombres jusqu'à255
cette sortie n'ont jamais besoin de plus de 15 itérations.En raison de la fâcheuse habitude de Python 2 d'ajouter un
L
à grand nombre, nous initialisons en fait la chaîne de chiffres àL
et vérifions si la taille définie est d'au moins 11. Python 3 enregistre 2 caractères en n'en ayant pas besoin, mais perd 3 caractères en utilisant desstr
raccourcis. Python 3.5 enregistre 2 caractères supplémentaires avec le décompactage d'ensemble, enregistrant un caractère sur Python 2 au total:la source
Rubis,
6765 caractèresFonctionne presque instantanément pour tous les cas de test, même ceux> 255.
Erreurs pour les numéros sans câlin.
Explication:
la source
CJam, 28 octets
Essayez-le en ligne
Cela repose sur le fait que le CUDDLE (s'il existe) n'est jamais supérieur à 15 pour la plage d'entrée, comme observé pour la première fois par @xnor.
Il existe probablement une meilleure façon de produire la sortie dans le cas où il n'y a pas de solution. Je mettrai à jour si je pense à quelque chose.
Explication:
la source
Mathematica, 103 octets
Il semble que seuls les pouvoirs de 10 n'auraient finalement pas de CUDDLE, ils sont donc ignorés. La fonction conserve une liste des chiffres vus et s'arrête lorsqu'il n'y a plus de zéros.
Production:
la source
log_10(n)
est irrationnel,k
il existe un entier positifm
tel que la représentation décimale den^m
commence park
. Ce qui signifie que sauter les puissances de 10 (et 0) est très bien :)JavaScript (ES6) 188
Pas mal pour un langage limité à des entiers de 53 bits.
Testez l'exécution de l'extrait ci-dessous dans un navigateur qui implémente EcmaScripts 6, y compris les fonctions fléchées et l'opérateur d'étalement (AFAIK Firefox)
la source
PowerShell, 94 octets
Rien de trop intelligent à ce sujet, mais la tuyauterie
sort -U[nique]
est un bon moyen de faireset()
fonctionner la fonctionnalité de Python pour ce type d'utilisation, sans ajouter explicitement d'éléments à une table de hachage.par exemple
la source
gawk 4, 73 + 5 pour les drapeaux = 78 octets
Pour chaque chiffre
0
bis9
rencontre dans les pouvoirs de l'entrée, il définit le bit représentant2^digit
ena
, jusqu'à ce que les 10 premiers chiffres sont trouvés (a == 1023 == 2^10-1
) ou il y a eu plus de 15 itérations.Doit être appelé avec un séparateur de champ vide et l'indicateur -M pour les grands nombres.
En tripotant cela, j'ai trouvé les séquences suivantes pour les différents câlins:
la source