Os números inteiros não negativos estão cansados de sempre ter os mesmos dois * vizinhos, então eles decidem misturar um pouco as coisas. No entanto, eles também são preguiçosos e querem ficar o mais próximo possível de sua posição original.
Eles vêm com o seguinte algoritmo:
- O primeiro elemento é 0.
- O elemento é o menor número que ainda não está presente na sequência e não é um vizinho do elemento .
Isso gera a seguinte sequência 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
é o primeiro elemento 1
é o menor número ainda não na sequência, mas é um vizinho de 0
. O próximo menor número é 2
, portanto, é o segundo elemento da sequência. Agora, os números restantes são 1,3,4,5,6,...
, mas como ambos 1
e 3
são vizinhos de 2
, 4
é o terceiro membro da sequência. Como 1
não é um vizinho 4
, ele pode finalmente tomar seu lugar como quarto elemento.
A tarefa
Escreva uma função ou programa no menor número de bytes possível, o que gera a sequência acima.
Você pode
- produzir a sequência infinitamente,
- pegue uma entrada e retorne o elemento da sequência, ou
- pegue uma entrada e retorne os primeiros elementos da sequência.
A indexação zero ou uma é boa caso você escolha uma das duas últimas opções.
Você não precisa seguir o algoritmo fornecido acima; qualquer método que produz a mesma sequência é adequado.
Inspirado pelo Code Golf, a melhor permutação . Acontece que este é A277618 .
* Zero tem literalmente apenas um vizinho e realmente não se importa.