Definamos una secuencia: la secuencia de suma de n dígitos (n-DSS) es una secuencia que comienza con n . Si el último número fue k , entonces el siguiente número es k + suma de dígitos (k) . Aquí están los primeros n-DSS:
1-DSS: 1, 2, 4, 8, 16, 23, 28, 38, 49, 62, 70...
2-DSS: 2, 4, 8, 16, 23, 28, 38, 49, 62, 70, 77...
3-DSS: 3, 6, 12, 15, 21, 24, 30, 33, 39, 51, 57...
4-DSS: 4, 8, 16, 23, 28, 38, 49, 62, 70, 77, 91...
5-DSS: 5, 10, 11, 13, 17, 25, 32, 37, 47, 58, 71...
6-DSS: 6, 12, 15, 21, 24, 30, 33, 39, 51, 57, 69...
7-DSS: 7, 14, 19, 29, 40, 44, 52, 59, 73, 83, 94...
8-DSS: 8, 16, 23, 28, 38, 49, 62, 70, 77, 91, 101...
9-DSS: 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99...
Para 1, esto es A004207 , aunque los primeros dígitos son diferentes debido a una definición ligeramente diferente. Para 3, es A016052 ; para 9, A016096 .
El desafío de hoy es encontrar la secuencia de suma de n dígitos más baja en la que aparece un número dado. Esto se llama "función colombiana inversa" y es A036233 . Los primeros veinte términos, comenzando con 1 son:
1, 1, 3, 1, 5, 3, 7, 1, 9, 5, 5, 3, 5, 7, 3, 1, 5, 9, 7, 20
Algunos otros buenos casos de prueba:
117: 9
1008: 918
Solo tiene que manejar enteros mayores que 0, y puede tomar entradas y salidas en cualquier formato estándar. Como de costumbre, este es el código de golf , por lo que gana la respuesta más corta en cada idioma.

Respuestas:
Haskell ,
1046463 bytes(-26 gracias a H.PWiz, adicional -14 gracias a Sriotchilism O'Zaic, -1 adicional gracias a cole)
Esta es una función.
Pruébalo en línea!
Explicación:
Secuencia de funciones compuestas que devuelve y + suma digital de y. Primero se convierte en cadena, luego hace gimnasia de mónada para obtener la suma de los personajes y el número original (gracias a Cole).
los
<*>operador en este contexto tiene tipo y definiciónpara que podamos escribir lo anterior como
Esto
read . pureconvierte aCharen un número, entonces(+) . read . pure :: Char -> Int -> Intagrega un dígito a un valor acumulado. Este valor se inicializa al número dado en el pliegue.untilaplica repetidamente una función a su resultado (en este caso, la suma digital y + y) hasta que cumpla un requisito especificado por una función en el primer argumento. Esto le da al elemento y-DSS más pequeño que es mayor o igual a x.Lista perezosa infinita de y tal que el elemento y-DSS más pequeño> = x es en realidad x. Utiliza la notación de comprensión de la lista de Haskell (que también me había olvidado por completo, gracias a todos).
Primer elemento de esa lista, que es la y más pequeña que satisface el requisito del desafío.
fuente
fmapen primer lugar me confunde un poco.Python 2 ,
7371 bytes-2 bytes gracias a Erik .
Pruébalo en línea!
fuente
lak>n.Perl 6 , 44 bytes
Pruébalo en línea!
Solución ingenua que verifica cada secuencia hasta que encuentra una que contiene la entrada
Explicación:
fuente
Ruby , 51 bytes
Pruébalo en línea!
fuente
Jalea , 11 bytes
Pruébalo en línea!
Programa completo
fuente
MATL , 18 bytes
Pruébalo en línea! O verifique los primeros 20 valores .
Explicación
Para la entrada
i, esto sigue aumentandonhasta que se incluyan los primerositérminos de lanenésima secuenciai. Es suficiente probar lositérminos para cada secuencia porque la secuencia está aumentando.fuente
Adelante (gforth) , 106 bytes
Pruébalo en línea!
Explicación del código
fuente
Pyth , 13 bytes
Pruébalo aquí o echa un vistazo a la suite de prueba .
Cómo funciona
fuente
fqQ.W<HQ+sjZ1014 años. ¡Siempre me olvido de 'y s como una forma de obtener dígitos de un número entero!Jalea , 9 bytes
Un enlace monádico que acepta un entero positivo
nque produce un entero positivoa(n), el colombiano inverso den.Pruébalo en línea! O vea el conjunto de pruebas .
Cómo
Efectivamente, trabajamos hacia atrás, buscando repetidamente el valor que agregamos hasta que no podamos encontrar uno:
Usando
13como ejemplo ...fuente
Python 2 , 85 bytes
Pruébalo en línea!
Esto ciertamente funciona para todos los casos de prueba, más todas las entradas 1..88 dadas en OEIS; pero aún no estoy seguro de que sea demostrablemente correcto. (Esta es una de mis quejas con respecto a la Iglesia de la Unidad de Pruebas :)).
fuente
a.index(n)Wolfram Language (Mathematica) , 61 bytes
Pruébalo en línea!
fuente
MathGolf , 13 bytes
Pruébalo en línea!
¡Gran reto! Me hizo encontrar algunos errores dentro del comportamiento pop implícito de MathGolf, que agregó 1-2 bytes a la solución.
Para demostrar que esto siempre funcionará, es fácil ver eso
n <= input, porqueinputes el primer elemento de lainputsecuencia th. Técnicamente, no he demostrado que esta solución sea siempre válida, pero supera todos los casos de prueba que he probado.fuente
05AB1E , 13 bytes
Pruébalo en línea!
fuente
Limpio , 86 bytes
Pruébalo en línea!
Expandido:
Me molesta que
digitToInt dsea más largo quetoInt d-48fuente
C (gcc) , 102 bytes
Pruébalo en línea!
fuente
JavaScript, 65 bytes
Pruébalo en línea!
También funciona como C, pero cuesta un byte más
C (gcc) , 66 bytes
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) ,
83, 82 bytesPruébalo en línea!
fuente
Japt ,
1514 bytes¡El ternario para manejar casos donde
input=outputme molesta!Intentalo
fuente
cQuents , 18 bytes
Pruébalo en línea!
Explicación
fuente
Adelante (gforth) , 99 bytes
Pruébalo en línea!
En gran medida similar a la presentación de reffu (106 bytes) . Las partes de golf son:
Cómo funciona
fuente
Carbón , 26 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Utiliza el algoritmo de @ ChasBrown. Si eso no es válido, entonces para 29 bytes:
Pruébalo en línea! El enlace es a la versión detallada del código. Funciona calculando el primer miembro de cada secuencia de suma de dígitos como mínimo
n. Explicación:Entrada
n.Bucle hasta que nos encontramos con una secuencia de dígitos que contiene sumando
n.La siguiente secuencia comienza con una más que el número de secuencias hasta ahora.
Bucle mientras que el miembro de la secuencia es menor que
n.Agregue la suma de dígitos para obtener el siguiente miembro de la secuencia.
Empuje al miembro final a la lista.
Imprima el número de listas calculadas hasta que encontremos una que contenga
n.fuente
Rojo , 103 bytes
Pruébalo en línea!
fuente
CJam , 25 bytes
Pruébalo en línea!
fuente
Gaia , 16 bytes
Pruébalo en línea!
Devuelve una lista que contiene el entero más pequeño.
Gaia , 16 bytes
Pruébalo en línea!
Utiliza la observación hecha por el Sr. Xcoder . No es más corto que el otro, pero es un enfoque interesante.
Gaia , 16 bytes
Pruébalo en línea!
Tercer enfoque que no utiliza
N-find,#pero sigue confiando en la misma observación que el enfoque intermedio. Devuelve un entero en lugar de una lista.fuente
Clojure , 106 bytes
Pruébalo en línea!
Esto es 99 bytes, pero da como resultado un desbordamiento de pila en entradas más grandes (tal vez ajustar la JVM ayudaría):
fuente
C # (compilador interactivo de Visual C #) , 75 bytes
Pruébalo en línea!
fuente
Casco ,
1410 bytes-4 gracias a @ H.PWiz
Pruébalo en línea!
fuente
€mΩ≥¹SF+dN(sigo sintiendo que hay más corto)V£⁰m¡SF+dNde tinta ,
130127 bytesPruébalo en línea!
-3 bytesconvirtiendo a un programa completo que toma entrada unaria.Esto se siente demasiado tiempo para no ser golfable.
Sin golf
fuente
C (gcc) ,
807978 bytesPruébalo en línea!
-2 de ceilingcat
fuente