Betrachten Sie die folgende Reihenfolge:
0 1 3 2 5 4 8 6 7 12 9 10 11 17 13 14 15 16 23 ...
Sieht ziemlich musterlos aus, oder? So funktioniert das. Beginnen Sie mit 0, springen Sie nganzzahlig auf, und nbeginnen Sie mit 1. Das ist die nächste Nummer in der Sequenz. Fügen Sie dann alle "übersprungenen" Zahlen hinzu, die noch nicht in aufsteigender Reihenfolge angezeigt wurden. Dann inkrementieren nund von der letzten angehängten Zahl springen. Wiederholen Sie dieses Muster.
Wenn wir zum Beispiel erreichen 11, sind wir bei n=5. Wir erhöhen nsein n=6, springen bis zu 17, dann append 13 14 15 16da diese noch nicht gesehen worden. Unser nächster Sprung ist n=7, also ist das nächste Element in der Sequenz 23.
Die Herausforderung
Geben Sie bei gegebener Eingabe xden xdritten Ausdruck dieser Sequenz und die ersten xAusdrücke der Sequenz aus oder erstellen Sie eine unendliche Liste der Ausdrücke der Sequenz. Sie können zwischen 0- und 1-Indexierung wählen.
I / O und Regeln
- Die Eingabe und Ausgabe kann durch jede bequeme Methode erfolgen .
- Es kann davon ausgegangen werden, dass die Eingabe und Ausgabe in den Native Number-Typ Ihrer Sprache passt.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.