Prawdopodobnie słyszałeś o liczbach Fibonacciego. Wiesz, ta liczba całkowita, która zaczyna się od 1, 1
, a następnie każda nowa liczba jest sumą dwóch ostatnich?
1 1 2 3 5 8 13...
I tak dalej. Wyzwania dotyczące liczb Fibonacciego są tutaj dość popularne . Ale kto mówi, że liczby Fibonacciego muszą zaczynać 1, 1
? Dlaczego nie mogli zacząć 0, 1
? W porządku, zdefiniujmy je na nowo od 0:
0 1 1 2 3 5 8 13...
Ale ... Nie musimy się na tym kończyć! Jeśli możemy dodać dwie ostatnie liczby, aby uzyskać następną, możemy również odjąć pierwszą liczbę od drugiej liczby, aby wstawić nową liczbę. Więc może zacząć od 1, 0
:
1 0 1 1 2 3 5 8 13...
Możemy nawet skończyć z negatywami:
-1 1 0 1 1 2 3 5 8 13...
Ta seria również trwa wiecznie. Myślę, że to ciekawe, jak to się w pewnym sensie odzwierciedla jak zwykłe liczby Fibonacciego, tylko z każdą inną liczbą ujemną:
13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Nazwijmy tę serię „rozszerzoną liczbą Fibonacciego” lub EFN . Ponieważ tak naprawdę nie ma oczywistej liczby ujemnej na początek tej serii, powiemy, że 0 pokazuje się na 0 , zwykłe liczby Fibonacciego rozciągają się na indeksy dodatnie, a ujemne (pół-ujemne?) Liczby Fibonacciego rozciągają się w indeksach ujemnych, tak:
Indices: ...-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 ...
Values: ...13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Prowadzi to do dzisiejszego wyzwania:
Biorąc pod uwagę liczbę całkowitą N , zwraca każdy indeks, przy którym N pojawia się w serii EFN .
Kilka losowych obserwacji tego zadania:
1 pojawia się kilka razy w europejskiej sieci prognozowania niż jakikolwiek inny numer:
[-1, 1, 2]
. Żadna liczba nie pojawi się w więcej niż 3 miejscach.Każda liczba Fibonacciego> 1 pojawi się raz (3, 8, 21 itd.) Lub dwa razy (2, 5, 13 itd.)
Wyjaśnienie reguł:
- Jeśli
abs(N)
nie jest liczbą Fibonacciego, nigdy nie pojawi się w serii EFN , więc nie możesz nic wypisać / pustej kolekcji, jeśli to możliwe, lub jeśli nie jest to możliwe w twoim języku, możesz wygenerować pewną stałą wartość nienumeryczną. - Jeśli N pojawia się w wielu miejscach w EFN , dane wyjściowe nie muszą być sortowane. Chociaż każdy indeks musi pojawić się dokładnie raz.
- Chociaż większość wyzwań sekwencyjnych pozwala wybrać, czy chcesz używać indeksowania opartego na 1, czy 0, wyzwanie to musi wykorzystywać opisaną indeksację (gdzie 0 pojawia się przy 0).
- Możesz wziąć we / wy w dowolnym standardowym formacie.
Przypadki testowe
-13: []
-12: []
-11: []
-10: []
-9: []
-8: [-6]
-7: []
-6: []
-5: []
-4: []
-3: [-4]
-2: []
-1: [-2]
0: 0
1: [-1, 1, 2]
2: [-3, 3]
3: [4]
4: []
5: [-5, 5]
6: []
7: []
8: [6]
9: []
10: []
11: []
12: []
13: [-7, 7]
I niektóre większe przypadki testowe:
89: [-11, 11]
1836311903: [46]
10000: []
-39088169: [-38]
Jak zwykle, najkrótsza odpowiedź w bajtach wygrywa!