Los enteros no negativos están aburridos de tener siempre los mismos dos * vecinos, por lo que deciden mezclar un poco las cosas. Sin embargo, también son flojos y quieren mantenerse lo más cerca posible de su posición original.
Vienen con el siguiente algoritmo:
- El primer elemento es 0.
- El elemento es el número más pequeño que aún no está presente en la secuencia y que no es vecino del elemento .
Esto genera la siguiente secuencia 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
Es el primer elemento. 1
es el número más pequeño que aún no está en la secuencia, pero es vecino de 0
. El siguiente número más pequeño es 2
, por lo que es el segundo elemento de la secuencia. Ahora los números restantes son 1,3,4,5,6,...
, pero como ambos 1
y 3
son vecinos de 2
, 4
es el tercer miembro de la secuencia. Como 1
no es vecino 4
, finalmente puede tomar su lugar como cuarto elemento.
La tarea
Escriba una función o programa en la menor cantidad de bytes posible que genere la secuencia anterior.
Puedes
- dar salida a la secuencia infinitamente,
- tome una entrada devuelva el elemento de la secuencia, o
- tome una entrada devuelva los primeros n elementos de la secuencia.
Tanto la indexación cero como la única están bien en caso de que elija una de las dos últimas opciones.
No necesita seguir el algoritmo dado anteriormente, cualquier método que produzca la misma secuencia está bien.
Inspirado en Code golf la mejor permutación . Resulta que esto es A277618 .
* Zero tiene literalmente solo un vecino y realmente no le importa.