Envisagez de prendre un nombre entier non négatif tel que 8675309 et de calculer les valeurs absolues des différences entre toutes les paires de chiffres voisins.
Pour que 8675309
nous obtenons |8-6| = 2
, |6-7| = 1
, |7-5| = 2
, |5-3| = 2
, |3-0| = 3
, |0-9| = 9
. Corder ces résultats donne en même temps une autre, plus petit entier non négatif: 212239
. La répétition du processus donne 11016
donc 0115
ce qui, par la convention que les zéros non majuscules ne sont pas écrits, simplifie 115
ce qui devient , ce qui devient 04
ou 4
ne peut pas être réduit davantage. En résumé, nous obtenons toutes ces valeurs 8675309 + 212239 + 11016 + 115 + 4 = 8898683
.
Définissons la somme des différences de chiffres (ou DDS) comme cette opération consistant à prendre de manière répétée les différences de chiffres d'un nombre pour former un nouveau nombre, puis à ajouter tous les nombres résultants à l'original.
Voici les 20 premières valeurs de la séquence DDS correspondante:
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
Voici les 10000 premières valeurs , dont le graphique est assez curieux:
D'autant plus que son aspect est identique lorsque vous le tracez à 1000 voire à 100:
(J'appellerais ça l' escalier du dentiste ...)
Défi
Ecrivez un programme ou une fonction qui prend un entier non négatif et affiche ou renvoie sa valeur DDS. Par exemple, si l'entrée était 8675309
, la sortie devrait l'être 8898683
.
Le code le plus court en octets gagne.