Prenez un entier positif en entrée. Commencez avec et augmentez à plusieurs reprises par la plus grande puissance entière de dix telle que et .
Répétez jusqu'à et retournez une liste de toutes les valeurs intermédiaires de , y compris le initial et le final .
Au cours de ce processus, la croissance sera initialement limitée par les premières inégalités, puis seulement par les secondes; la croissance prendra la forme d'une période initiale "d'expansion", pendant laquelle est augmenté de puissances toujours plus grandes, suivie d'une période "contractuelle", pendant laquelle est augmentée de puissances toujours plus petites afin de "zoomer" sur le bon numéro.
Cas de test
1 => [1]
10 => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
321 => [1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 20, 30, 40, 50, 60, 70, 80, 90,
100, 200, 300, 310, 320, 321]
1002 => [1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 20, 30, 40, 50, 60, 70, 80, 90,
100, 200, 300, 400, 500, 600, 700, 800, 900,
1000, 1001, 1002]
Il s'agit de code-golf , donc la réponse la plus courte (en octets) l'emporte.
Réponses:
Haskell ,
72686463 octetsEssayez-le en ligne!
Merci Sriotchilism O'Zaic pour -4 octets!
Usage
Explication
la source
(^)
que la priorité est plus élevée que(+)
vous n'avez pas besoin de parenthèses autour de l'(^)
expression. Même chose pour(!)
et(:)
pred.length.show.min c$t-c
peut être raccourcilength(show.min c$t-c)-1
. Les fonctions anonymes sont acceptables, vous pouvez donc supprimer le leaderf=
comme expliqué dans notre guide des règles de golf à Haskell .c!t=c: if t>c then (c+10^(length(show.min c$t-c)-1))!t else []
. Cela permet d'appliquer cette astuce pour économiser quelques octets de plus: Essayez-le en ligne!JavaScript (ES6), 50 octets
Essayez-le en ligne!
Comment?
Théorie
Les étapes suivantes sont répétées jusqu'àn=0 :
la mise en oeuvre
'10'
'10'
la source
k
pour quelque chose de complètement différent de la description du défi (en fait, vous êtesn
un mélange d'OPn
etk
et votrex
est le leuri
.)Python 2 , 61 octets
Essayez-le en ligne!
la source
Perl 6 ,
4841 octetsEssayez-le en ligne!
Explication:
la source
APL (Dyalog Unicode) , 30 octets SBCS
Fonction de préfixe tacite anonyme. Imprime les numéros sur des lignes distinctes vers la sortie standard.
Essayez-le en ligne!
{
}∘1
⍺=⍵
⍺
⋄
autre:⎕←⍵
⍺-
⍵,
10⍟
⌊
plancher ceux⌊/
minimum de ceux10*
dix élevé à la puissance de cette⍵+
⍺∇
la source
05AB1E , 15 octets
Port de @PaulMutser 's (first) Haskell answer , so make to upvote it !!
Essayez-le en ligne ou vérifiez tous les cas de test .
Sort les nombres délimités par la nouvelle ligne.
S'il doit s'agir d'une liste, je devrais ajouter 3 octets:
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
Gelée , 19 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , 51 octets
Essayez-le en ligne!
la source
Lot, 131 octets
Prend l'entrée en tant que paramètre de ligne de commande et sort la liste des nombres vers STDOUT. Explication:
Commencez par
n=1
eti=1
représentant la puissance de 10.Multipliez
i
par 10 sin
a atteint la prochaine puissance de 10.Affiche la valeur actuelle de
n
.Répéter tout
i
peut être ajoutén
sans qu'il dépasse l'entrée.Restaurez la valeur précédente de
n
et divisezi
par 10.Si ce
i
n'est pas zéro, essayez d'ajouteri
àn
nouveau.la source
R ,
6765 octets-2 octets grâce à Giuseppe
Assez simple. Il faut un ensemble de pouvoirs de 10 au-delà de ce qui serait nécessaire dans l'ordre inverse
i
.(Je préférerais utiliser
i=10^rev(0:log10(k))
plutôt quei=10^(k:0)
puisque ce dernier est inefficace sur le plan des calculs, mais le golf c'est le golf!).Ensuite, dans une boucle while, applique les conditions à
i
et prend la première (c'est-à-dire la plus grande); met à journ
et ajoute à la sortieEssayez-le en ligne!
la source
T
au lieu den
; il devrait être de 2, mais je ne pense pas que ceTRUE
soit une sortie acceptable pourk=1
, nous avons donc régléo=+T
. Essayez!o=1
, et obtenir ce deuxième octet.Gelée , 12 octets
Essayez-le en ligne!
la source
Pip , 27 octets
Essayez-le en ligne!
En pseudocode:
Je suis assez satisfait des astuces de golf que j'ai pu appliquer pour raccourcir cet algorithme. En initialisant, mettant à jour et imprimant des éléments dans l'en-tête de boucle, j'ai pu éviter d'avoir besoin d'accolades pour le corps de la boucle. Il y a probablement un algorithme de golfeur, cependant.
la source
Japt , 18 octets
Essayez-le
la source
C # (Visual C # Interactive Compiler) ,
123122 octetsEssayez-le en ligne!
la source
Prolog (SWI) , 142 octets
Essayez-le en ligne!
Explication à venir demain ou quelque chose
la source