Contexte
Considérons une séquence définie comme suit:
- Le premier élément est 0;
- Le deuxième élément est 4;
- A partir du troisième élément, sa valeur peut être calculée par:
- Prendre l'ensemble des entiers de 0 à l'élément précédent de la séquence (inclusif ou exclusif, peu importe);
- Supprimer tous les entiers qui sont déjà apparus plus tôt dans la séquence de l'ensemble;
- Additionner les éléments restants de l'ensemble; c'est la valeur que vous voulez.
Fait intéressant, cette séquence ne semble pas encore être sur OEIS .
La tâche
Écrivez un programme ou une fonction qui prend un entier n en entrée et génère le n ème élément de la séquence.
Cas de test
Les premiers éléments de la séquence sont:
- 0
- 4
- 6 (1 + 2 + 3)
- 11 (1 + 2 + 3 + 5)
- 45 (1 + 2 + 3 + 5 + 7 + 8 + 9 + 10)
- 969 (1 + 2 + 3 + 5 + 7… 10 + 12… 44)
- 468930 (1 + 2 + 3 + 5 + 7… 10 + 12… 44 + 46… 968)
Clarifications
- Votre programme devrait en théorie être capable de gérer arbitrairement n s'il est exécuté sur une variante de votre langue qui a des nombres entiers sans limites et un accès à une quantité illimitée de mémoire. (Il est peu probable que les langues sans bignum puissent aller bien au-delà de 468930, mais ce n'est pas une excuse pour coder en dur les réponses.)
- Vous pouvez choisir une indexation basée sur 0 ou 1 pour la séquence (par exemple, c'est à vous de décider si n = 1 renvoie le premier élément, n = 2 le deuxième élément, etc.) ou si n = 0 renvoie le premier élément , n = 1 le deuxième élément, etc.).
- Il n'y a aucune exigence sur l'algorithme que vous utilisez, ni sur son efficacité; vous pouvez implémenter directement la définition de la séquence (même si elle est vraiment inefficace), et vous pouvez également implémenter un algorithme différent qui conduit aux mêmes résultats.
Condition de victoire
Il s'agit de code-golf , donc le programme correct le plus court, mesuré en octets, gagne.