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 13wir 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 0ist die 0. Nummer in dieser Reihenfolge. Darauf aufbauend drucken wir aus 0und 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 3kleiner 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])?