Zastanów się nad wzięciem nieujemnej liczby całkowitej, takiej jak 8675309 i obliczeniem wartości bezwzględnych różnic między wszystkimi parami sąsiednich cyfr.
Dla 8675309
mamy |8-6| = 2
, |6-7| = 1
, |7-5| = 2
, |5-3| = 2
, |3-0| = 3
, |0-9| = 9
. Sznurka wyniki te razem daje inny, mniejszy nieujemną liczbę całkowitą: 212239
. Powtórzenie tego procesu daje 11016
zatem 0115
, że zgodnie z konwencją, że wiodące zera nie są zapisywane, upraszcza as 115
, który staje się 04
lub 4
którego nie można już dalej zmniejszać. Podsumowując wszystkie te wartości, otrzymujemy 8675309 + 212239 + 11016 + 115 + 4 = 8898683
.
Zdefiniujmy różnicę cyfr różnicowych (lub DDS) jako tę operację polegającą na wielokrotnym przyjmowaniu różnic liczbowych liczby w celu utworzenia nowej liczby, a następnie dodawaniu wszystkich uzyskanych liczb do oryginału.
Oto pierwsze 20 wartości w odpowiedniej sekwencji DDS:
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
Oto pierwsze 10000 wartości , których wykres jest dość ciekawy:
Zwłaszcza, że wygląda tak samo, gdy wydrukujesz go na 1000, a nawet 100:
(Nazwałbym to schodami dentysty ...)
Wyzwanie
Napisz program lub funkcję, która przyjmuje nieujemną liczbę całkowitą i drukuje lub zwraca jej wartość DDS. Na przykład, jeśli wejście było 8675309
, wyjście powinno być 8898683
.
Najkrótszy kod w bajtach wygrywa.