あなたはおそらくフィボナッチ数を聞いたことがあるでしょう。や、知っている、その整数シーケンスはで始まり1, 1
、新しい番号はそれぞれ最後の2つの合計ですか?
1 1 2 3 5 8 13...
等々。フィボナッチ数に関する課題は、ここでかなり人気があります。しかし、誰がフィボナッチ数列を始めなければならないと言うの1, 1
でしょうか?なぜ始められなかったの0, 1
ですか?それでは、0から開始するように再定義しましょう。
0 1 1 2 3 5 8 13...
しかし...私たちもそこでやめる必要はありません!最後の2つの数値を追加して次の数値を取得できる場合、2番目の数値から最初の数値を減算して新しい数値を追加することもできます。したがって、次のように開始でき1, 0
ます。
1 0 1 1 2 3 5 8 13...
ネガティブになることさえあります:
-1 1 0 1 1 2 3 5 8 13...
そして、このシリーズも永遠に続きます。他のすべての数字が負になっているだけで、通常のフィボナッチ数列をミラーリングするのは面白いと思います:
13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
このシリーズを「拡張フィボナッチ数」またはEFNと呼びましょう。明白な負の番号は上のこのシリーズを開始するために実際に存在しないので、我々はと言うでしょう0ショーアップで0、通常のフィボナッチ数は、正の指数にに延びており、負(ハーフネガティブ?)フィボナッチ数を伸ばします次のように、負のインデックスに:
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...
これは今日の課題につながります。
整数Nを指定すると、EFNシリーズでNが現れるすべてのインデックスを返します。
このタスクに関するランダムな観察:
EFNには、他の数字よりも1回多く表示されます:
[-1, 1, 2]
。3か所以上に数字は表示されません。1より大きいすべてのフィボナッチ数は、1回(3、8、21など)または2回(2、5、13など)表示されます。
ルールの明確化:
abs(N)
がフィボナッチ数でない場合、EFNシリーズには表示されないため、可能な場合は何も/空のコレクションを出力する必要があります。または、言語でそれが不可能な場合は、一定の非数値を出力できます。- NがEFNの複数の場所に表示される場合、出力をソートする必要はありません。ただし、各インデックスは1回だけ表示する必要があります。
- ほとんどのシーケンスチャレンジでは、1ベースのインデックス付けを使用するか、0ベースのインデックス付けを使用するかを選択できますが、このチャレンジでは、説明したインデックス付けを使用する必要があります(0は0で表示されます)。
- 任意の標準形式でI / Oを実行できます。
テストケース
-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]
そして、いくつかのより大きなテストケース:
89: [-11, 11]
1836311903: [46]
10000: []
-39088169: [-38]
いつものように、バイト単位の最短回答が勝ちです!