Sie haben wahrscheinlich von Fibonacci-Zahlen gehört. Weißt du, diese Ganzzahlsequenz, die mit beginnt 1, 1
, und dann ist jede neue Zahl die Summe der letzten beiden?
1 1 2 3 5 8 13...
Und so weiter. Herausforderungen bezüglich der Fibonacci-Zahlen sind hier sehr beliebt . Aber wer sagt, dass die Fibonacci-Zahlen anfangen müssen 1, 1
? Warum konnten sie nicht mit anfangen 0, 1
? Okay, definieren wir sie neu, um bei 0 zu beginnen:
0 1 1 2 3 5 8 13...
Aber ... da müssen wir auch nicht aufhören! Wenn wir die letzten beiden Zahlen addieren können, um die nächste zu erhalten, können wir auch die erste Zahl von der zweiten Zahl abziehen, um eine neue Zahl voranzustellen. So könnte es beginnen mit 1, 0
:
1 0 1 1 2 3 5 8 13...
Wir können sogar mit Negativen enden:
-1 1 0 1 1 2 3 5 8 13...
Und diese Serie geht auch für immer weiter. Ich finde es interessant, wie es zu einer Art Spiegelung der regulären Fibonacci-Zahlen kommt, nur mit jeder anderen negativen Zahl:
13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Nennen wir diese Serie die "Extended Fibonacci Number" oder EFN . Da es keine offensichtliche negative Zahl gibt, an der diese Reihe beginnen könnte, werden wir sagen, dass 0 bei 0 auftaucht , die regulären Fibonacci-Zahlen sich auf die positiven Indizes erstrecken und die negativen (halbnegativen?) Fibonacci-Zahlen sich erstrecken in den negativen Indizes, wie so:
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...
Dies führt zur heutigen Herausforderung:
Gegeben eine ganze Zahl N , Rückkehr jeden Index , bei dem N im erscheint EFN - Serie.
Einige zufällige Beobachtungen zu dieser Aufgabe:
1 erscheint mehrmals in der EFN als jede andere Zahl:
[-1, 1, 2]
. Keine Nummer erscheint an mehr als 3 Stellen.Jede Fibonacci-Zahl> 1 wird entweder einmal (3, 8, 21 usw.) oder zweimal (2, 5, 13 usw.) angezeigt.
Regelklärungen:
- Wenn
abs(N)
es sich nicht um eine Fibonacci-Zahl handelt, wird sie niemals in der EFN- Reihe angezeigt. Sie müssen daher nach Möglichkeit nichts oder eine leere Sammlung ausgeben. Wenn dies in Ihrer Sprache nicht möglich ist, können Sie einen konstanten nicht numerischen Wert ausgeben. - Wenn N an mehreren Stellen in der EFN angezeigt wird , muss Ihre Ausgabe nicht sortiert werden. Obwohl jeder Index genau einmal erscheinen muss.
- Obwohl Sie bei den meisten Sequenzherausforderungen auswählen können, ob Sie eine 1-basierte oder eine 0-basierte Indizierung verwenden möchten, muss für diese Herausforderung die beschriebene Indizierung verwendet werden (wobei 0 bei 0 angezeigt wird).
- Sie können I / O durch jedes Standardformat führen.
Testfälle
-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]
Und einige größere Testfälle:
89: [-11, 11]
1836311903: [46]
10000: []
-39088169: [-38]
Wie immer gewinnt die kürzeste Antwort in Bytes!