Tome un entero positivo como entrada. Start con y repetidamente aumentan por la mayor potencia entera de diez tal que y .
Repita hasta y devuelva una lista de todos los valores intermedios de , incluidos tanto el inicial como el final .
Durante este proceso, el crecimiento estará inicialmente limitado por la primera desigualdad, y solo después por la segunda; el crecimiento tomará la forma de un período de "expansión" inicial, durante el cual aumenta con poderes cada vez mayores, seguido de un período de "contrato", durante el cual aumenta con poderes cada vez más pequeños para "acercarse" en el número correcto
Casos de prueba
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]
Este es el código de golf , por lo que gana la respuesta más corta (en bytes).
Respuestas:
Haskell ,
72686463 bytesPruébalo en línea!
Gracias Sriotchilism O'Zaic por -4 bytes!
Uso
Explicación
fuente
(^)
tiene mayor prioridad que(+)
no necesita paréntesis alrededor de la(^)
expresión. Lo mismo va para(!)
y(:)
pred.length.show.min c$t-c
se puede acortar alength(show.min c$t-c)-1
. Las funciones anónimas son aceptables, por lo que puede eliminar el liderazgof=
como se explica en nuestra guía de reglas de golf en Haskell .c!t=c: if t>c then (c+10^(length(show.min c$t-c)-1))!t else []
. Esto permite aplicar este consejo para guardar algunos bytes más: ¡ Pruébelo en línea!JavaScript (ES6), 50 bytes
Pruébalo en línea!
¿Cómo?
Teoría
Los siguientes pasos se repiten hastan = 0 :
Implementación
El valor deX se calcula directamente como una cadena con la siguiente expresión:
Nota : Excluir el inicio10 (por ejemplo, n = 10 00 ) pero no cambia el número de ceros finales capturados para valores como n = 10 23 00 (debido a los dígitos intermedios adicionales distintos de cero, en
'10'
solo afecta a las potencias exactas de'10'
realidad no coincide en absoluto en tales casos).fuente
k
para algo completamente diferente que en la descripción desafío (de hecho, sun
es una mezcla de OPn
yk
ya sux
es sui
.)Python 2 , 61 bytes
Pruébalo en línea!
fuente
Perl 6 ,
4841 bytesPruébalo en línea!
Explicación:
fuente
APL (Dyalog Unicode) , 30 SBCS de bytes
Función de prefijo tácito anónimo. Imprime números en líneas separadas para stdout.
Pruébalo en línea!
{
...}∘1
anónimo infijo lambda con 1 curry como inicial⍺=⍵
Si⍺
volver (e imprimir implícitamente)⋄
más:⎕←⍵
impresión⍺-
restar eso de⍵,
anteponer10⍟
⌊
piso esos⌊/
mínimo de esos10*
diez elevado al poder de eso⍵+
⍺∇
recurse usando lo mismofuente
05AB1E , 15 bytes
El puerto de la respuesta de Haskell de @PaulMutser (primero) , ¡así que asegúrate de votarlo!
Pruébelo en línea o verifique todos los casos de prueba .
Emite los números delimitados por nueva línea.
Si debe ser una lista, tendría que agregar 3 bytes:
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
Jalea , 19 bytes
Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 51 bytes
Pruébalo en línea!
fuente
Lote, 131 bytes
Toma la entrada como un parámetro de línea de comando y envía la lista de números a STDOUT. Explicación:
Comienza con
n=1
yi=1
representa el poder de 10.Multiplique
i
por 10 sin
ha alcanzado la siguiente potencia de 10.Salida del valor actual de
n
.Repita mientras
i
se puede agregarn
sin que exceda la entrada.Restaurar el valor anterior de
n
y dividiri
por 10.Si
i
no es cero, entonces probar a añadiri
an
nuevo.fuente
R ,
6765 bytes-2 bytes gracias a Giuseppe
Bastante simple. Se necesita un conjunto de potencias de 10 más allá de lo que se necesitaría en orden inverso
i
.(Preferiría usar en
i=10^rev(0:log10(k))
lugar dei=10^(k:0)
ya que este último es computacionalmente ineficiente, ¡pero el golf es golf!).Luego, en un ciclo while, aplica las condiciones
i
y toma el primero (es decir, el más grande); se actualizan
y se agrega a la salidaPruébalo en línea!
fuente
T
lugar den
; debería ser 2, pero no creo queTRUE
sea una salida aceptablek=1
, así que configuramoso=+T
. ¡Intentalo!o=1
y obtener ese segundo byte.Jalea , 12 bytes
Pruébalo en línea!
fuente
Pip , 27 bytes
Pruébalo en línea!
En pseudocódigo:
Estoy bastante satisfecho con los trucos de golf que pude aplicar para acortar este algoritmo. Al inicializar, actualizar e imprimir cosas en el encabezado del bucle, pude evitar necesitar llaves para el cuerpo del bucle. Sin embargo, probablemente haya un algoritmo de golfista.
fuente
Japt , 18 bytes
Intentalo
fuente
C # (compilador interactivo de Visual C #) ,
123122bytesPruébalo en línea!
fuente
Prólogo (SWI) , 142 bytes
Pruébalo en línea!
Explicación que viene mañana o algo
fuente