introduzione
Certo, abbiamo molte sequenze sfide in , quindi eccone un'altra.
La sequenza di Kimberling ( A007063 ) è la seguente:
1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28, 22, ...
Questo è prodotto mescolando la normale iterazione:
[1] 2 3 4 5 6 7 8
Il primo termine della sequenza è 1
. Dopodiché, rimescoliamo la sequenza fino a quando non vengono utilizzati tutti i termini a sinistra. Il mescolamento ha il modello right - left - right - left - ...
. Dal momento che non ci sono termini alla sinistra del 1
, non c'è mescolamento. Otteniamo quanto segue:
2 [3] 4 5 6 7 8 9
Sulla i esima iterazione, si scartano l'i esimo elemento e mettere che nella nostra sequenza. Questa è la seconda iterazione, quindi scartiamo la seconda voce. La sequenza diventa: 1, 3
. Per la nostra prossima iterazione, mescoleremo l'attuale iterazione con il modello sopra. Prendiamo il primo elemento non utilizzato a destra dell'i esimo elemento. Questo sembra essere 4
. Lo aggiungeremo alla nostra nuova iterazione:
4
Ora stiamo andando a prendere il primo elemento non utilizzato a sinistra della i esima voce. Questo è 2
. Lo aggiungeremo alla nostra nuova iterazione:
4 2
Poiché non ci sono elementi a sinistra dell'i ° elemento, aggiungeremo semplicemente il resto della sequenza alla nuova iterazione:
4 2 [5] 6 7 8 9 10 11 ...
Questa è la nostra terza iterazione, quindi elimineremo la terza voce, ovvero 5
. Questo è il terzo elemento della nostra sequenza:
1, 3, 5
Per ottenere la prossima iterazione, basta ripetere il processo. Ho fatto una gif se non è chiaro:
La gif mi ha richiesto più tempo rispetto alla scrittura del post vero e proprio
Compito
- Dato un numero intero non negativo n , genera il primo n termini della sequenza
- È possibile fornire una funzione o un programma
- Questo è code-golf , quindi vince l'invio con il minor numero di byte!
Casi test:
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: le virgole nell'output non sono necessarie. Ad esempio, è possibile utilizzare newline o creare un elenco, ecc.