La raíz digital (también suma digital repetida) de un entero positivo es el valor (de un solo dígito) obtenido por un proceso iterativo de suma de dígitos, en cada iteración utilizando el resultado de la iteración anterior para calcular una suma de dígitos. El proceso continúa hasta que se alcanza un número de un solo dígito.
Por ejemplo, la raíz digital de 65536 es 7 , porque 6 + 5 + 5 + 3 + 6 = 25 y 2 + 5 = 7 .
Ordenar todas las raíces digitales no tiene mucho sentido, ya que solo comenzaría con infinitos 1 s.
En su lugar, crearemos listas de todos los enteros de un solo dígito junto con sus raíces digitales, luego todos los números de dos dígitos junto con sus raíces digitales, luego el triple, cuádruple, etc.
Ahora, para cada una de esas listas, lo ordenaremos de manera que todos los enteros con raíces digitales de 1 aparezcan primero, luego todos los enteros con raíces digitales de 2 y así sucesivamente. La clasificación será estable, de modo que la lista de enteros con ciertas raíces digitales debe estar en orden ascendente después de la clasificación.
Finalmente concatenaremos estas listas en una sola secuencia. Esta secuencia comenzará con todos los números de un solo dígito, luego todos los números de dos dígitos (ordenados por su raíz digital), luego todos los números de tres dígitos y así sucesivamente.
Reto:
Tome un entero positivo n como entrada y envíe el número n 'en la secuencia descrita anteriormente. Puede elegir si la lista tiene un índice 0 o un índice 1 .
La secuencia es así:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91, 11, 20, 29 ...
72, 81, 90, 99, 100, 109, 118, ...
981, 990, 999, 1000, 1009, 1018, 1027, ...
Casos de prueba:
Los casos de prueba están indexados en 1.
n f(n)
9 9
10 10
11 19
40 13
41 22
42 31
43 40
44 49
45 58
600 105
601 114
602 123
603 132
604 141
605 150
4050 1453
4051 1462
4052 1471
4053 1480
4054 1489
4055 1498
Más fácil de copiar:
n = 9, 10, 11, 40, 41, 42, 43, 44, 45, 600, 601, 602, 603, 604, 605, 4050, 4051, 4052, 4053, 4054, 4055,
f(n) = 9, 10, 19, 13, 22, 31, 40, 49, 58, 105, 114, 123, 132, 141, 150, 1453, 1462, 1471, 1480, 1489, 1498
Aclaraciones:
- Es posible que no muestre todos los n primeros elementos. Solo deberás generar el n 'th.
- El código debe funcionar teóricamente para todos los enteros hasta 10 ^ 9 , pero está bien si se agota el tiempo de espera en TIO (u otros intérpretes con restricciones de tiempo) para entradas mayores de 999 .
- Se alientan las explicaciones.
Es código golf , por lo que gana el código más corto en cada idioma. ¡No se desanime por otras soluciones en el idioma en el que desea jugar golf, incluso si son más cortas de lo que puede manejar!