Einführung
Natürlich haben wir viele Herausforderungen in Bezug auf Sequenzen. Hier ist eine andere.
Die Kimberling-Sequenz ( A007063 ) lautet wie folgt:
1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28, 22, ...
Dies wird durch Mischen der normalen Iteration erzeugt:
[1] 2 3 4 5 6 7 8
Der erste Term der Sequenz ist 1
. Danach mischen wir die Sequenz neu, bis alle Begriffe auf der linken Seite verwendet werden. Das Mischen hat das Muster right - left - right - left - ...
. Da links von keine Begriffe stehen 1
, wird nicht gemischt. Wir bekommen folgendes:
2 [3] 4 5 6 7 8 9
Bei der i- ten Iteration verwerfen wir das i- te Element und fügen es in unsere Sequenz ein. Dies ist die 2. Iteration, also verwerfen wir den 2. Punkt. Die Sequenz wird: 1, 3
. Für unsere nächste Iteration werden wir die aktuelle Iteration mit dem obigen Muster mischen. Wir nehmen den ersten unbenutzten Artikel rechts vom i- ten Artikel. Das ist zufällig so 4
. Wir werden dies an unsere neue Iteration anhängen:
4
Jetzt nehmen wir den ersten unbenutzten Gegenstand links vom i- ten Gegenstand. Das ist 2
. Wir werden dies an unsere neue Iteration anhängen:
4 2
Da links vom i- ten Element keine Elemente mehr vorhanden sind , wird der Rest der Sequenz an die neue Iteration angehängt:
4 2 [5] 6 7 8 9 10 11 ...
Dies ist unsere 3. Iteration, wir werden also das 3. Element verwerfen 5
. Dies ist der dritte Punkt in unserer Sequenz:
1, 3, 5
Um die nächste Iteration zu erhalten, wiederholen Sie einfach den Vorgang. Ich habe ein GIF gemacht, wenn es nicht klar ist:
Das GIF hat länger gedauert als das Schreiben des eigentlichen Posts
Aufgabe
- Bei einer nicht negativen Ganzzahl n werden die ersten n Terme der Sequenz ausgegeben
- Sie können eine Funktion oder ein Programm bereitstellen
- Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
Testfälle:
Input: 4
Output: 1, 3, 5, 4
Input: 8
Output: 1, 3, 5, 4, 10, 7, 15, 8
Input: 15
Output: 1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28
Hinweis: Die Kommas in der Ausgabe sind nicht erforderlich. Sie können beispielsweise Zeilenumbrüche verwenden oder eine Liste usw. ausgeben.