Aqui está uma sequência interessante descoberta por Paul Loomis, matemático da Universidade de Bloomsburg. De sua página nesta sequência:
Defina
f(n) = f(n-1) + (the product of the nonzero digits of f(n-1))
f(0) = x
, x
como qualquer número inteiro positivo, escrito na base 10.
Então, começando com f(0)=1
, você obtém a seguinte sequência
1, 2, 4, 8, 16, 22, 26, 38, 62, 74, 102, 104, ...
Até agora, tão padrão. A propriedade interessante entra em jogo quando você toma qualquer outro número inteiro como ponto de partida; eventualmente, a sequência converge para um ponto ao longo da x=1
sequência acima . Por exemplo, começando com x=3
rendimentos
3, 6, 12, 14, 18, 26, 38, 62, 74, 102, ...
Aqui estão mais algumas sequências, cada uma exibida apenas até atingirem 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, ...
Ele conjeturou, e provou empiricamente x=1,000,000
, que essa propriedade (isto é, que todos os números de entrada convergem para a mesma sequência) é verdadeira.
O desafio
Dado um número inteiro positivo, insira 0 < x < 1,000,000
o número em que a f(x)
sequência converge para a f(1)
sequência. Por exemplo, para x=5
isso seria 26
, pois esse é o primeiro número em comum para as duas seqüências.
x output
1 1
5 26
19 102
63 150056
Regras
- Se aplicável, você pode supor que a entrada / saída caiba no tipo Inteiro nativo do seu idioma.
- A entrada e saída podem ser fornecidas por qualquer método conveniente .
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
fonte
Geléia ,
1814 bytesA entrada é uma matriz singleton.
Experimente online!
Como funciona
fonte
Python 2 ,
1119593 bytesUsando descompactar
replace(*'01')
como na resposta @Rod-18 bytes graças a @Lynn
Experimente online!
fonte
while cmp(*l)
também pode ser !Haskell , 65 bytes
Experimente online!
fonte
Python 2 , 78 bytes
Experimente online!
fonte
Casca , 13 bytes
Recebe entrada como uma lista de singleton.
Experimente online!
Explicação
fonte
Python 3 ,
126125 bytesExperimente online!
Tome a entrada como string
fonte
Java (JDK 10) , 99 bytes
Experimente online!
Principalmente uma porta iterativa da resposta JavaScript de Arnauld , então vote-o novamente!
fonte
Gelatina , 23 bytes
Experimente online!
fonte
J , 50 bytes
definição de função de estilo tácito
se o argumento (digamos 63) fosse colado em uma expressão REPL, poderia ser 45, por exemplo
,&1
acrescente 1 para gerar a sequência de pesquisa e a sequência do argumento^:(<453)"0
itera cada um até que 1 milhão seja alcançado na sequência de 1+ [: */@(*#]) (#~10)&#:
garfo acrescenta ao gancho que faz o produto dos dígitos(e.~ # ])/
usa item repetido se existir para obter a interseção de listas{.
retorna apenas o primeiro valor comumExperimente online!
fonte
R ,
11086 bytesTIO
versão anterior 110:
TIO
fonte