8675309 gibi bazı negatif olmayan bir tamsayı almayı ve tüm komşu basamak çiftleri arasındaki farkların mutlak değerlerini hesaplamayı düşünün.
İçin 8675309
aldığımız |8-6| = 2
, |6-7| = 1
, |7-5| = 2
, |5-3| = 2
, |3-0| = 3
, |0-9| = 9
. Birlikte bu sonuçlar çekimi başka, daha küçük negatif olmayan bir sayıyı elde edilir: 212239
. İşlemi tekrarlamak 11016
, o zaman 0115
, baştaki sıfırların yazılı olmadığı sözleşmesiyle 115
, hangisinin daha fazla azaltılamayacağını 04
veya 4
hangilerinin azaltılacağını basitleştirir . Tüm bu değerleri toplayarak alıyoruz 8675309 + 212239 + 11016 + 115 + 4 = 8898683
.
Rakam Farkı Toplamını (veya DDS) yeni bir sayı oluşturmak için art arda sayı farklarını alıp ardından tüm sayıları orijinaline ekleyerek bu işlem olarak tanımlayalım.
Karşılık gelen DDS dizisindeki ilk 20 değer:
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
Grafik, oldukça meraklı olan ilk 10000 değerleri :
Özellikle de 1000 veya 100'e koyarken aynı gözüktüğü için:
(Ben dişçi merdiveni derdim ...)
Meydan okuma
Negatif olmayan bir tamsayı alan ve DDS değerini basan veya veren bir program veya işlev yazın. Örneğin, giriş olsaydı 8675309
, çıkış olmalıdır 8898683
.
Bayt cinsinden en kısa kod kazanır.