Fondo
Considere una secuencia definida de la siguiente manera:
- El primer elemento es 0;
- El segundo elemento es 4;
- A partir del tercer elemento, su valor puede calcularse mediante:
- Tomando el conjunto de enteros desde 0 hasta el elemento anterior de la secuencia (inclusivo o exclusivo, no importa);
- Eliminar todos los enteros que ya aparecieron anteriormente en la secuencia del conjunto;
- Agregar todos los elementos restantes del conjunto; ese es el valor que quieres.
Curiosamente, esta secuencia aún no parece estar en OEIS .
La tarea
Escribir un programa o función que toma un número entero n como entrada, y da salida a la n -ésimo elemento de la secuencia.
Casos de prueba
Los primeros elementos de la secuencia son:
- 0 0
- 4 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)
Aclaraciones
- En teoría, su programa debería ser capaz de manejar n arbitraria si se ejecuta en una variante de su lenguaje que tiene enteros ilimitados y acceso a una cantidad ilimitada de memoria. (Es improbable que los idiomas sin bignums puedan llegar mucho más allá de 468930, pero eso no es excusa para codificar las respuestas).
- Puede elegir la indexación basada en 0 o en 1 para la secuencia (por ejemplo, depende de usted si n = 1 devuelve el primer elemento, n = 2 el segundo elemento, etc.) o si n = 0 devuelve el primer elemento , n = 1 el segundo elemento, y así sucesivamente).
- No hay requisitos sobre el algoritmo que usa, ni sobre su eficiencia; puede implementar la definición de la secuencia directamente (aunque sea realmente ineficiente), y también puede implementar un algoritmo diferente que conduzca a los mismos resultados.
Condición de victoria
Este es el código de golf , por lo que gana el programa correcto más corto, medido en bytes.