Gli interi non negativi si annoiano di avere sempre gli stessi due vicini, quindi decidono di mescolare un po 'le cose. Tuttavia, sono anche pigri e vogliono stare il più vicino possibile alla loro posizione originale.
Vengono fuori con il seguente algoritmo:
- Il primo elemento è 0.
- L' elemento è il numero più piccolo che non è ancora presente nella sequenza e che non è un vicino dell'elemento .
Questo genera la seguente sequenza infinita:
0,2,4,1,3,5,7,9,6,8,10,12,14,11,13,15,17,19,16,18,20,22,24,21,23,25,27,29,26,28 ...
0
è il primo elemento. 1
è il numero più piccolo non ancora nella sequenza, ma è un vicino di 0
. Il prossimo numero più piccolo è 2
, quindi è il secondo elemento della sequenza. Ora i numeri rimanenti sono 1,3,4,5,6,...
, ma come entrambi 1
e 3
vicini di casa 2
, 4
è il terzo membro della sequenza. Poiché 1
non è un vicino di casa 4
, può finalmente prendere il suo posto come quarto elemento.
L'obiettivo
Scrivi una funzione o un programma nel minor numero di byte possibile che genera la sequenza sopra.
Potresti
- emette la sequenza all'infinito,
- accetta un input e restituisce l' elemento della sequenza, oppure
- accetta un input e restituisce i primi n elementi della sequenza.
L'indicizzazione zero o una va bene nel caso in cui si scelga una delle due ultime opzioni.
Non è necessario seguire l'algoritmo sopra indicato, qualsiasi metodo che produce la stessa sequenza va bene.
Ispirato da Code golf la migliore permutazione . Si scopre che questo è A277618 .
* Zero ha letteralmente un solo vicino e non gliene importa nulla.