Aquí hay una secuencia interesante descubierta por Paul Loomis, matemático de la Universidad de Bloomsburg. De su página en esta secuencia:
Definir
f(n) = f(n-1) + (the product of the nonzero digits of f(n-1))
f(0) = x
, con x
cualquier número entero positivo, escrito en base 10.
Entonces, comenzando f(0)=1
, obtienes la siguiente secuencia
1, 2, 4, 8, 16, 22, 26, 38, 62, 74, 102, 104, ...
Hasta ahora, tan estándar. La propiedad interesante entra en juego cuando tomas cualquier otro número entero como punto de partida, eventualmente la secuencia converge en un punto a lo largo de la x=1
secuencia anterior . Por ejemplo, comenzando con x=3
rendimientos
3, 6, 12, 14, 18, 26, 38, 62, 74, 102, ...
Éstos son algunos más secuencias, cada muestra solamente hasta que llegan 102
:
5, 10, 11, 12, 14, 18, 26, 38, 62, 74, 102, ...
7, 14, 18, 26, 38, 62, 74, 102, ...
9, 18, 26, 38, 62, 74, 102, ...
13, 16, 22, 26, 38, 62, 74, 102, ...
15, 20, 22, 26, 38, 62, 74, 102, ...
17, 24, 32, 38, 62, 74, 102, ...
19, 28, 44, 60, 66, 102, ...
Conjeturó y demostró empíricamente x=1,000,000
que esta propiedad (es decir, que todos los números de entrada convergen en la misma secuencia) es cierta.
El reto
Dado un entero de entrada positivo 0 < x < 1,000,000
, emite el número donde la f(x)
secuencia converge a la f(1)
secuencia. Por ejemplo, para x=5
, esto sería 26
, ya que ese es el primer número en común para ambas secuencias.
x output
1 1
5 26
19 102
63 150056
Reglas
- Si corresponde, puede suponer que la entrada / salida se ajustará al tipo entero nativo de su idioma.
- La entrada y salida se pueden dar por cualquier método conveniente .
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
fuente
Jalea ,
1814 bytesLa entrada es una matriz singleton.
Pruébalo en línea!
Cómo funciona
fuente
Python 2 ,
1119593 bytesUtilizando el desempaquetado
replace(*'01')
como en @Rod responde-18 bytes gracias a @Lynn
Pruébalo en línea!
fuente
while cmp(*l)
!Haskell , 65 bytes
Pruébalo en línea!
fuente
Python 2 , 78 bytes
Pruébalo en línea!
fuente
Casco , 13 bytes
Toma la entrada como una lista singleton.
Pruébalo en línea!
Explicación
fuente
Python 3 ,
126125bytesPruébalo en línea!
Toma la entrada como cadena
fuente
Java (JDK 10) , 99 bytes
Pruébalo en línea!
Principalmente un puerto iterativo de la respuesta de JavaScript de Arnauld , ¡así que vota!
fuente
Jalea , 23 bytes
Pruébalo en línea!
fuente
J , 50 bytes
definición de función de estilo tácito
si el argumento (por ejemplo, 63) se pegara en una expresión REPL, podría ser 45 por ejemplo
,&1
agregar 1 para generar la secuencia de búsqueda, así como la secuencia de argumentos^:(<453)"0
itera cada uno hasta que se alcanza 1 millón en la secuencia de 1+ [: */@(*#]) (#~10)&#:
tenedor agrega al gancho que hace el producto de dígitos(e.~ # ])/
usa el elemento de repetición si existe para obtener la intersección de las listas{.
devuelve solo el primer valor comúnPruébalo en línea!
fuente
R ,
11086 bytesTIO
versión anterior 110:
TIO
fuente