Un certain nombre de langages de programmation construisent de grands entiers en «concaténant» le chiffre à la fin du nombre existant. Par exemple, Labyrinth ou Adapt . En concaténant le chiffre jusqu'à la fin, je veux dire que si le nombre existant est et que le chiffre est , le nombre résultat est .
Un nombre construit est un nombre qui peut être construit de cette façon en utilisant les multiples de nombres à un chiffre: AKA un élément dans l'une de ces 9 séquences:
Pour fournir un exemple de la façon dont les séquences sont construites, voici comment la séquence pour construite:
et inclus pour démontrer quand . Ungrand nombrede chiffrespointillés pourespace.
La façon dont ces séquences sont construites n'est peut-être pas encore claire, alors voici deux façons différentes de les comprendre:
Chaque séquence commence à partir du seul chiffre. Le terme suivant est trouvé en prenant le multiple suivant de ce chiffre, en multipliant le terme précédent par et en ajoutant le multiple. En termes de séquence:
où est un seul chiffre ( à )
Chacun des éléments à n'importe quel point de la séquence (prenez par exemple) sont les multiples de de à , où est construit par
Ainsi, les premières valeurs sont , les secondes sont , la troisième , etc.
Votre tâche consiste à prendre un nombre construit en entrée et à sortir le chiffre initial utilisé pour le construire. Vous pouvez supposer que l'entrée sera toujours un nombre construit et sera supérieure à . Il peut s'agir d'un seul chiffre, qui correspond à lui-même.
Vous pouvez saisir des données de toute manière raisonnable, y compris sous forme de liste de chiffres, sous forme de chaîne, etc. Il est acceptable (mais non recommandé) de saisir des données de manière unaire ou dans toute autre base de votre choix.
C'est un code-golf donc le code le plus court gagne!
Cas de test
u_n => a
37035 => 3
6172839506165 => 5
5 => 5
246913580244 => 2
987654312 => 8
61728395061720 => 5
1111104 => 9
11111103 => 9
111111102 => 9
2469134 => 2
98760 => 8
8641975308641962 => 7
ou en deux listes:
[37035, 6172839506165, 5, 246913580244, 987654312, 61728395061720, 1111104, 11111103, 111111102, 2469134, 98760, 8641975308641962]
[3, 5, 5, 2, 8, 5, 9, 9, 9, 2, 8, 7]
Lorsque j'ai publié ce défi, je ne savais pas qu'il pouvait être tellement simplifié par la méthode utilisée dans la réponse de Grimy , et donc je serais très intéressé par les réponses qui adoptent une approche plus mathématique pour résoudre ce problème, plutôt que par un `` chiffre '' astuce (Évidemment, toutes les réponses valides sont également valables, juste ce que je serais intéressé de voir).
Réponses:
05AB1E ,
754 octetsEssayez-le en ligne!
la source
a * (((10**n - 1) / 9 - n) / 9)
. Multipliez cela par 9 et ajouteza*n
, et vous obteneza * ((10**n - 1) / 9)
, alias le chiffre répété n fois. Il s'avère que l'ajout de 9 au lieu dea*n
fonctionne pour n = 1, et pour n plus grand, la différence constante est négligeable à côté de la croissance exponentielle.MathGolf , 6 octets
Essayez-le en ligne!
Malheureusement, il n'y a aucune
head
opération dans MathGolf, donc je dois me contenter▒├Þ
de convertir en chaîne, de sauter à partir de la gauche et de jeter tout sauf le haut de la pile.la source
Gelée , 5 octets
Essayez-le en ligne!
En utilisant l'approche de Grimy .
la source
Stax , 5 octets
Exécuter et déboguer
la source
Japt
-g
,765 octets-1 octet grâce à Shaggy
Prend l'entrée sous forme de chaîne
Essayez-le | Testez plusieurs entrées
la source
Fusain , 7 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. @ La méthode de Grimy bien sûr. Voici une approche mathématique de 27 octets:
Essayez-le en ligne! Le lien est vers la version détaillée du code. Plantage sur des entrées invalides. Explication:
Saisissez le nombre construit.
Interprétez la liste comme un nombre en base 10, multipliez par tous les nombres de
0
à9
et voyez si le nombre construit apparaît.Poussez la longueur de la liste sur elle-même. La liste devient donc du formulaire
[0, 1, 2, ..., n]
.Recréez les nombres construits mais cette fois trouvez et sortez l'index auquel le numéro d'entrée est apparu.
la source
Labyrinthe ,
28 2220 octetsApplique la méthode basée sur les chiffres décrite par Grimy par division d'entier répétée par dix jusqu'à ce que zéro soit trouvé.
Essayez-le en ligne!
la source
Espace , 108 octets
Lettres
S
(espace),T
(tabulation) etN
(nouvelle ligne) ajoutées uniquement en surbrillance.[..._some_action]
ajouté à titre d'explication uniquement.Port de @Grimy réponse 05AB1E de , sauf que je n'ai pas builtin pour obtenir le premier chiffre. ;)
Essayez-le en ligne (avec des espaces bruts, des tabulations et des nouvelles lignes uniquement).
Explication en pseudo-code:
la source
Python 3 , 22 octets
Essayez-le en ligne!
Port de Grimy de réponse 05AB1E
Python 3 , 74 octets
Essayez-le en ligne!
Explication
Fonction récursive. Itère sur la séquence de chaque chiffre
l
, en commençant par1
. Si l'entréei
est égale à l'itération en coursj
, le chiffre correspondantl
est renvoyé. Sinon, si la valeur actuellej
de la séquence dépasse la valeur d'entréei
, elle incrémentera le chiffrel
et recommencera. L'argumentk
est utilisé pour incrémenter le facteur de multiplication.la source
JavaScript (ES6),
1615 octetsMerci à @Grimy d'avoir levé la contrainte 32 bits que j'avais avec la version précédente.
Utilisation de l'incantation magique de Grimy . Prend l'entrée sous forme de chaîne.
Essayez-le en ligne!
JavaScript (ES6), 53 octets
Approche par force brute naïve.
Essayez-le en ligne!
la source
-~n*9
peut êtren*9+9
, ce qui est le même bytecount mais devrait se débarrasser de la limitation 32 bits si j'ai bien compris.14808
n=>n
fonctionne pour toutes les entrées.Java 8, 23 octets
Port de @Grimy réponse 05AB1E de , alors assurez - vous de le upvote!
Essayez-le en ligne.
Mais parce que je me sens un peu mal pour @cairdCoinheringaahing , voici une approche par force brute avec un peu plus de moyens ( 83 octets ):
Essayez-le en ligne.
Explication:
la source
PHP , 20 octets
Essayez-le en ligne!
Encore un autre port de réponse de Grimy !
la source
Gelée , 8 octets
Essayez-le en ligne!
Un programme complet qui prend un entier et imprime le chiffre de démarrage. N'utilise pas la méthode intelligente de Grimy! Terriblement inefficace pour une plus grande entrée. La version suivante gère tous les cas de test mais est un octet plus long:
Gelée , 9 octets
Essayez-le en ligne!
la source
Hy , 44 octets
Utilise la méthode de Grimy
Essayez-le en ligne!
la source
Keg
-rr
, 4 octetsEssayez-le en ligne!
Bien sûr, utilise la même approche que la réponse 05AB1E. Utilise également le nouveau
-rr
drapeau (inverser et imprimer brut).Transpile vers:
la source
Troglodyte , 30 octets
Juste un port de la plupart des réponses.
Essayez-le en ligne!
la source