Considera la seguente sequenza:
0 1 3 2 5 4 8 6 7 12 9 10 11 17 13 14 15 16 23 ...
Sembra abbastanza privo di schemi, giusto? Ecco come funziona. A partire da 0
, salta su n
interi, con a n
partire da 1
. Questo è il prossimo numero nella sequenza. Quindi aggiungi tutti i numeri "saltati" e non ancora visti in ordine crescente. Quindi, incrementa n
e salta dall'ultimo numero aggiunto. Ripeti questo schema.
Quindi, per esempio, quando raggiungiamo 11
, siamo a n=5
. Aumentiamo n
per essere n=6
, saltiamo su 17
, quindi aggiungiamo 13 14 15 16
poiché quelli non sono stati ancora visti. Il nostro prossimo salto è n=7
, quindi l'elemento successivo nella sequenza è 23
.
La sfida
Dato input x
, emette il x
termine di questa sequenza, i primi x
termini della sequenza o crea un elenco infinito di termini della sequenza. Puoi scegliere l'indicizzazione 0 o 1.
I / O e regole
- L'input e l'output possono essere forniti con qualsiasi metodo conveniente .
- Si può presumere che l'input e l'output si adattino al tipo di numero nativo della tua lingua.
- È accettabile un programma completo o una funzione. Se una funzione, è possibile restituire l'output anziché stamparlo.
- Sono vietate le scappatoie standard .
- Si tratta di code-golf quindi si applicano tutte le normali regole del golf e vince il codice più breve (in byte).