Montag Minigolf: Eine Reihe von kurzen Code-Golf- Herausforderungen, die (hoffentlich!) Jeden Montag veröffentlicht werden.
Eine Fibonacci-ähnliche Sequenz wird unter Verwendung der gleichen Methode wie die berühmte Fibonacci-Sequenz erhalten ; Das heißt, jede Zahl F (n) wird durch Addition der vorherigen beiden Zahlen in der Folge ( F (n) = F (n-1) + F (n-2) ) oder durch Subtrahieren der nächsten beiden Zahlen ( F) gefunden (n) = F (n + 2) - F (n + 1) ). Der Hauptunterschied besteht darin, dass diese Sequenzen mit zwei beliebigen Zahlen beginnen können. Die Null-Indizierung dieser Sequenzen ist umstritten, aber im Moment werden wir diese Regel anwenden:
- Die 0. Ziffer in einer Fibonacci-ähnlichen Folge ist die letzte Ziffer, die kleiner ist als die vorherige Ziffer.
Als Beispiel könnte die Fibonacci-Sequenz so geschrieben werden 1, 0, 1, 1, 2, 3, 5...
, dass die 0-te Zahl in der Sequenz die einzige ist 0
.
Herausforderung
Das Ziel der Herausforderung besteht darin, ein Programm oder eine Funktion zu schreiben, die drei ganze Zahlen in einem beliebigen Format enthält:
- A und B sind die beiden Zahlen, mit denen eine Sequenz generiert werden soll.
- N ist die Länge der resultierenden Sequenz, die ausgegeben werden soll.
Und gibt die ersten N Zahlen der Sequenz aus, beginnend mit der 0.
Einzelheiten
- A , B und N können in beliebiger Reihenfolge und in beliebigem Format angegeben werden, sofern sie sichtbar voneinander getrennt sind. Wenn Sie eine andere Bestellung / ein anderes Format verwenden, geben Sie bitte an, um was es sich handelt.
- Sie können annehmen, dass A , B und N immer positive ganze Zahlen sind.
- Sie können davon ausgehen, dass N nicht mehr als 100 ist und die resultierende Sequenz nicht enthalten wird
x >= 2^31
. - Wenn A größer als B ist , ist B die 0. Zahl in der Folge.
- Die Ausgabe muss durch Leerzeichen, Kommas und / oder Zeilenumbrüche getrennt sein.
- Ein nachgestelltes Leerzeichen oder eine neue Zeile ist zulässig, jedoch kein nachgestelltes Komma.
Testfälle
Beispiel 1:
8 13 10
Wenn 8 13
wir rückwärts arbeiten, bis wir eine größere Zahl als die vorherige finden, erhalten wir 13 8 5 3 2 1 1 0 1
. Somit 0
ist die 0. Nummer in dieser Reihenfolge. Darauf aufbauend drucken wir aus 0
und die nächsten 9 Mitglieder:
0 1 1 2 3 5 8 13 21 34
Beispiel 2:
23 37 5
Wieder rückwärts arbeiten, um die 0. Zahl zu finden, finden wir 37 23 14 9 5 4 1 3
. Die 0. Zahl ist diesmal 1
, also drucken wir sie zusammen mit den nächsten 4 Mitgliedern aus:
1 4 5 9 14
Beispiel 3:
4 3 8
Mit diesem müssen wir nicht rückwärts arbeiten, um die 0. Zahl zu finden, da sie 3
kleiner ist als 4
:
3 7 10 17 27 44 71 115
Beispiel 4:
29 47 11
Ergebnis:
1 3 4 7 11 18 29 47 76 123 199
Wertung
Das ist Code-Golf , also gewinnt der kürzeste gültige Code in Bytes. Tiebreaker geht zu einem früher geposteten Beitrag. Der Gewinner wird am kommenden Montag, 28. September, ermittelt. Viel Glück!
Bearbeiten: Herzlichen Glückwunsch an Ihren Gewinner, @Jakube, mit Pyth für erstaunliche 23 Bytes!
[8, 13, 10]
)?