La sequenza di Recamán è definita come segue:
o in pseudo-codice:
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.
I primi numeri sono ( 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
Se studi questa sequenza, noterai che ci sono duplicati, ad esempio a(20) = a(24) = 42(indicizzati 0). Chiameremo un numero un duplicato se nella sequenza è presente almeno un numero identico.
Sfida:
Prendi un intero k e immetti i primi k numeri duplicati nell'ordine in cui vengono trovati come duplicati nella sequenza di Recamán o solo il k 'esimo numero.
I primi numeri duplicati sono:
42, 43, 78, 79, 153, 154, 155, 156, 157, 152, 265, 261, 262, 135, 136, 269, 453, 454, 257, 258, 259, 260, 261, 262
Alcune cose da notare:
- a (n) non conta come duplicato se non ci sono numeri identici in a (0) ... a (n-1) , anche se a (n + m) == a (n) .
- 42 sarà prima di 43, poiché il suo duplicato si verifica prima del duplicato di 43
- La sequenza non è ordinata
- Ci sono elementi duplicati anche in questa sequenza. Ad esempio, il 12 ° e il 23 ° numero sono entrambi 262 (indicizzati 0).
Casi di test (indicizzati 0)
k Output
0 42
9 152
12 262
23 262
944 5197
945 10023
10000 62114
Questo è code-golf , quindi vince il codice più corto in ogni lingua!
Le spiegazioni sono incoraggiate!
43prodotto prima 42? Appare per primo nella sequenza di Recamán. Intendi prima l'output di quello che si trova per primo un duplicato?