Die nicht-negativen Ganzzahlen haben die Langeweile, immer die gleichen zwei * Nachbarn zu haben, und beschließen, die Dinge ein wenig durcheinander zu bringen. Sie sind aber auch faul und wollen so nah wie möglich an ihrer ursprünglichen Position bleiben.
Sie kommen mit dem folgenden Algorithmus:
- Das erste Element ist 0.
- Das -Element ist die kleinste Zahl, die noch nicht in der Sequenz vorhanden ist und die kein Nachbar des -Elements ist.
Dies erzeugt die folgende unendliche Folge:
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
ist das erste Element. 1
ist die kleinste Zahl, die noch nicht in der Sequenz enthalten ist, aber ein Nachbar von 0
. Die nächstkleinere Zahl ist 2
, also das zweite Element der Sequenz. Jetzt sind die restlichen Zahlen 1,3,4,5,6,...
, aber da beide 1
und 3
Nachbarn von sind 2
, 4
ist das dritte Mitglied der Sequenz. Da 1
es kein Nachbar von ist 4
, kann es endlich seinen Platz als viertes Element einnehmen.
Die Aufgabe
Schreiben Sie eine Funktion oder ein Programm in so wenigen Bytes wie möglich, um die obige Sequenz zu erzeugen.
Du könntest
- die Sequenz unendlich ausgeben,
- Nehmen Sie eine Eingabe und geben Sie das -Element der Sequenz zurück, oder
- Nehmen Sie eine Eingabe und geben Sie die ersten Elemente der Sequenz zurück.
Für den Fall, dass Sie eine der beiden letztgenannten Optionen wählen, ist sowohl die Null- als auch die Eins-Indizierung in Ordnung.
Sie müssen den oben angegebenen Algorithmus nicht befolgen. Jede Methode, die dieselbe Sequenz erzeugt, ist in Ordnung.
Inspiriert von Code Golf die beste Permutation . Es stellt sich heraus, dass dies A277618 ist .
* Zero hat buchstäblich nur einen Nachbarn und interessiert sich nicht wirklich dafür.