Urutan Rekaman didefinisikan sebagai berikut:
atau dalam pseudo-code:
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.
Angka pertama adalah ( 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
Jika Anda mempelajari urutan ini, Anda akan melihat bahwa ada duplikat, misalnya a(20) = a(24) = 42(diindeks 0). Kami akan memanggil nomor duplikat jika setidaknya ada satu nomor yang sama di depannya secara berurutan.
Tantangan:
Ambil input integer k , dan hasilkan k nomor duplikat k pertama dalam urutan mereka ditemukan sebagai duplikat dalam Urutan Recamán, atau hanya nomor k '.
Nomor duplikat pertama ini adalah:
42, 43, 78, 79, 153, 154, 155, 156, 157, 152, 265, 261, 262, 135, 136, 269, 453, 454, 257, 258, 259, 260, 261, 262
Beberapa hal yang perlu diperhatikan:
- a (n) tidak dihitung sebagai duplikat jika tidak ada angka identik dalam (0) ... a (n-1) , bahkan jika a (n + m) == a (n) .
- 42 akan sebelum 43, karena duplikatnya terjadi sebelum duplikat 43
- Urutannya tidak diurutkan
- Ada elemen duplikat dalam urutan ini juga. Misalnya nomor 12 dan 23 keduanya 262 (0-diindeks).
Kasus uji (0-diindeks)
k Output
0 42
9 152
12 262
23 262
944 5197
945 10023
10000 62114
Ini adalah kode-golf , jadi kode terpendek di setiap bahasa menang!
Penjelasan didorong!
43output sebelumnya 42? Itu muncul pertama kali dalam urutan Recamán. Apakah yang Anda maksudkan adalah output yang pertama kali ditemukan merupakan duplikat?