Considere la siguiente secuencia:
0 1 3 2 5 4 8 6 7 12 9 10 11 17 13 14 15 16 23 ...
Parece bastante sin patrón, ¿verdad? Así es como funciona. Comenzando con 0, saltar nnúmeros enteros, ncomenzando en 1. Ese es el siguiente número en la secuencia. Luego, agregue cualquier número "omitido" y que aún no se haya visto en orden ascendente. Luego, incremente ny salte desde el último número agregado. Repite este patrón.
Entonces, por ejemplo, cuando llegamos 11, estamos en n=5. Incrementamos npara ser n=6, saltar hacia arriba y 17luego agregar, 13 14 15 16ya que aún no se han visto. Nuestro próximo salto es n=7, entonces el siguiente elemento en la secuencia es 23.
El reto
Dada la entrada x, da salida al xtérmino de esta secuencia, los primeros xtérminos de la secuencia, o construye una lista infinita de los términos de la secuencia. Puede elegir 0 o 1 indexación.
E / S y reglas
- La entrada y salida se pueden dar por cualquier método conveniente .
- Se puede suponer que la entrada y la salida encajan en el tipo de número nativo de su idioma.
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).