Recamán'ın Sırası şu şekilde tanımlanır:
veya sözde kodla:
a(0) = 0,
if (a(n - 1) - n) > 0 and it is not
already included in the sequence,
a(n) = a(n - 1) - n
else
a(n) = a(n - 1) + n.
İlk sayılar ( OEIS A005132 ):
0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9, 24, 8, 25, 43, 62, 42, 63, 41, 18, 42
Bu sırayı incelerseniz, örneğin a(20) = a(24) = 42
(0 dizinli) yinelemeler olduğunu fark edeceksiniz . Dizinin önünde en az bir özdeş sayı varsa, bir sayıya yinelenir.
Meydan okuma:
Bir tamsayı k girin ve ya ilk k yinelenen sayıları Recamán Sekansında yinelenen olarak buldukları sırayla veya yalnızca k 'sayısından çıkın .
Bu ilk çoğaltılan numaralar:
42, 43, 78, 79, 153, 154, 155, 156, 157, 152, 265, 261, 262, 135, 136, 269, 453, 454, 257, 258, 259, 260, 261, 262
Unutulmaması gereken birkaç nokta:
- a (n) , a (n + m) == a (n) olsa bile, (0) ... a (n-1) 'de aynı sayı yoksa, a (n) yinelenmez .
- 42'si 43'ten önce olacak, çünkü kopyası 43'ün kopyası olmadan önce
- Dizi sıralanmamış
- Bu sırayla da yinelenen öğeler var. Örneğin, 12. ve 23. sayıların her ikisi de 262'dir (0 dizinli).
Test senaryoları (0 dizinli)
k Output
0 42
9 152
12 262
23 262
944 5197
945 10023
10000 62114
Bu kod golf , bu yüzden her dilde en kısa kod kazanır!
Açıklamalar teşvik edilir!
43
önce çıktı alınmıyor 42
? İlk olarak Recamán'ın dizisinde görünür. İlk önce çoğaltılanın bulunduğu çıktı mı demek istediniz?