Considere pegar um número inteiro não negativo como 8675309 e calcular os valores absolutos das diferenças entre todos os pares de dígitos vizinhos.
Para 8675309
chegarmos |8-6| = 2
, |6-7| = 1
, |7-5| = 2
, |5-3| = 2
, |3-0| = 3
, |0-9| = 9
. Amarrando estes resultados em conjunto produz uma outra menor número inteiro, não-negativo: 212239
. Repetir o processo fornece 11016
, então 0115
, que pela convenção de que os zeros à esquerda não são escritos simplifica como 115
, o que se torna 04
ou 4
que não pode mais ser reduzido. Resumindo todos esses valores, obtemos 8675309 + 212239 + 11016 + 115 + 4 = 8898683
.
Vamos definir a soma da diferença de dígitos (ou DDS) como esta operação de tirar repetidamente as diferenças de dígitos de um número para formar um novo número e adicionar todos os números resultantes ao original.
Aqui estão os 20 primeiros valores na sequência DDS correspondente:
N DDS(N)
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 11
11 11
12 13
13 15
14 17
15 19
16 21
17 23
18 25
19 27
Aqui estão os primeiros 10000 valores , cujo gráfico é bastante curioso:
Especialmente porque parece o mesmo quando você planeja 1000 ou mesmo 100:
(Eu chamaria de escada do dentista ...)
Desafio
Escreva um programa ou função que receba um número inteiro não negativo e imprima ou retorne seu valor DDS. Por exemplo, se a entrada foi 8675309
, a saída deve ser 8898683
.
O código mais curto em bytes vence.