Monday Mini-Golf: Seria krótkich golfowych wyzwań, opublikowanych (miejmy nadzieję!) W każdy poniedziałek.
Fibonacciego jak sekwencji otrzymano z użyciem takiego samego sposobu jak znanego ciągu Fibonacciego ; to znaczy, każdą liczbę F (n) można znaleźć, dodając dwie poprzednie liczby w sekwencji ( F (n) = F (n-1) + F (n-2) ) lub odejmując kolejne dwie liczby ( F (n) = F (n + 2) - F (n + 1) ). Główną różnicą jest to, że sekwencje te mogą zaczynać się dowolnymi dwiema liczbami. Zerowe indeksowanie tych sekwencji jest dyskusyjne, ale na razie użyjemy tej reguły:
- Liczba 0 w sekwencji podobnej do Fibonacciego jest ostatnią liczbą, która jest mniejsza niż liczba poprzednia.
Jako przykład, sekwencję Fibonacciego można zapisać jako 1, 0, 1, 1, 2, 3, 5...
, więc 0-ta liczba w sekwencji jest samotna 0
.
Wyzwanie
Celem wyzwania jest napisanie programu lub funkcji, która przyjmuje trzy liczby całkowite, w dowolnym formacie:
- A i B , dwie liczby, z którymi rozpoczyna się generowanie sekwencji.
- N , długość wynikowej sekwencji do wyjścia.
I wyprowadza pierwsze N liczb sekwencji, zaczynając od 0.
Detale
- A , B i N można przyjmować w dowolnej kolejności i formacie, o ile są one wyraźnie rozdzielone. Jeśli używasz innego zamówienia / formatu, określ, co to jest.
- Możesz założyć, że A , B i N są zawsze dodatnimi liczbami całkowitymi.
- Możesz założyć, że N wynosi nie więcej niż 100, a wynikowa sekwencja nie będzie zawierać
x >= 2^31
. - Jeśli A jest większy niż B , to B jest numerem 0 w sekwencji.
- Dane wyjściowe muszą być oddzielone spacjami, przecinkami i / lub znakami nowej linii.
- Końcowe spacje lub znaki nowej linii są dozwolone, ale nie przecinki końcowe.
Przypadki testowe
Przykład 1:
8 13 10
Pracujemy wstecz, 8 13
dopóki nie znajdziemy liczby większej niż poprzednia, otrzymujemy 13 8 5 3 2 1 1 0 1
. Zatem 0
jest numerem 0 w tej sekwencji. Pracując dalej, drukujemy 0
i kolejnych 9 członków:
0 1 1 2 3 5 8 13 21 34
Przykład 2:
23 37 5
Znów pracujemy wstecz, aby znaleźć cyfrę 0 37 23 14 9 5 4 1 3
. Tym razem jest to numer 0 1
, więc drukujemy go wraz z następnymi 4 członkami:
1 4 5 9 14
Przykład 3:
4 3 8
Dzięki temu nie musimy pracować wstecz, aby znaleźć cyfrę 0, ponieważ 3
jest mniejsza niż 4
:
3 7 10 17 27 44 71 115
Przykład 4:
29 47 11
Wynik:
1 3 4 7 11 18 29 47 76 123 199
Punktacja
To jest golf golfowy , więc wygrywa najkrótszy prawidłowy kod w bajtach. Tiebreaker przechodzi do wcześniej opublikowanego zgłoszenia. Zwycięzca zostanie wybrany w następny poniedziałek, 28 września. Powodzenia!
Edycja: Gratulacje dla twojego zwycięzcy, @Jakube, używając Pytha dla niesamowitych 23 bajtów!
[8, 13, 10]
)?