Introducción
Por supuesto, tenemos muchos desafíos de secuencia , así que aquí hay otro.
La secuencia de Kimberling ( A007063 ) es la siguiente:
1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28, 22, ...
Esto se produce barajando la iteración normal:
[1] 2 3 4 5 6 7 8
El primer término de la secuencia es 1
. Después de eso, reorganizamos la secuencia hasta que se usen todos los términos de la izquierda. La mezcla tiene el patrón right - left - right - left - ...
. Como no hay términos a la izquierda del 1
, no hay barajado. Obtenemos lo siguiente:
2 [3] 4 5 6 7 8 9
En el i ª iteración, descartamos la i º elemento y ponerlo en nuestra secuencia. Esta es la segunda iteración, por lo que descartamos el segundo elemento. La secuencia se convierte en: 1, 3
. Para nuestra próxima iteración, vamos a barajar la iteración actual con el patrón anterior. Tomamos el primer elemento que no utilice a la derecha de la i º artículo. Esto pasa a ser 4
. Agregaremos esto a nuestra nueva iteración:
4
Ahora vamos a dar el primer elemento que no utilice a la izquierda del i ésimo elemento. Esto es 2
. Agregaremos esto a nuestra nueva iteración:
4 2
Dado que no existen elementos que quedan en la parte izquierda de la i º artículo, voy a anexar el resto de la secuencia de la nueva iteración:
4 2 [5] 6 7 8 9 10 11 ...
Esta es nuestra tercera iteración, por lo que descartaremos el tercer elemento, que es 5
. Este es el tercer elemento de nuestra secuencia:
1, 3, 5
Para obtener la siguiente iteración, simplemente repita el proceso. He hecho un gif si no está claro:
El gif me llevó más tiempo que escribir la publicación real
Tarea
- Dado un número entero no negativo n , genera los primeros n términos de la secuencia
- Puede proporcionar una función o un programa
- Este es el código de golf , por lo que gana el envío con la menor cantidad de bytes.
Casos de prueba:
Input: 4
Output: 1, 3, 5, 4
Input: 8
Output: 1, 3, 5, 4, 10, 7, 15, 8
Input: 15
Output: 1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28
Nota: Las comas en la salida no son necesarias. Puede, por ejemplo, usar nuevas líneas o generar una lista, etc.