La séquence de Recamán est définie comme suit:
ou en 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.
Les premiers chiffres sont ( 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
Si vous étudiez cette séquence, vous remarquerez qu'il y a des doublons, par exemple a(20) = a(24) = 42
(indexés 0). Nous appellerons un numéro un doublon s'il y a au moins un numéro identique devant lui dans la séquence.
Défi:
Prenez une entrée entière k et sortez soit les k premiers nombres en double dans l'ordre où ils sont trouvés comme doublons dans la séquence de Recamán, soit uniquement les k « e numéro.
Ces premiers numéros dupliqués sont:
42, 43, 78, 79, 153, 154, 155, 156, 157, 152, 265, 261, 262, 135, 136, 269, 453, 454, 257, 258, 259, 260, 261, 262
Quelques points à noter:
- a (n) ne compte pas comme doublon s'il n'y a pas de nombres identiques dans a (0) ... a (n-1) , même si a (n + m) == a (n) .
- 42 sera avant 43, car son double se produit avant le double de 43
- La séquence n'est pas triée
- Il y a aussi des éléments en double dans cette séquence. Par exemple, les 12e et 23e chiffres sont tous deux 262 (indexés 0).
Cas de test (indexés 0)
k Output
0 42
9 152
12 262
23 262
944 5197
945 10023
10000 62114
C'est le code-golf , donc le code le plus court dans chaque langue gagne!
Les explications sont encouragées!
43
sortie n'est-elle pas antérieure 42
? Il apparaît d'abord dans la séquence de Recamán. Voulez-vous dire la sortie en premier celle qui se trouve être un doublon?