我々は、すべての有名に精通しているフィボナッチ数列で始まり、0
そして1
、各要素は、前の2の合計です。以下に、最初のいくつかの用語を示します(OEIS A000045):
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584
与えられた正の整数で、これらの規則の下で、フィボナッチ数列の最も近い数を返します。
最も近いフィボナッチ数は、指定された整数と最小絶対差がフィボナッチ数として定義されます。たとえば、
34
はに最も近いフィボナッチ数30
です|34 - 30| = 4
。これは、、、が2番目に近いもの、、の21
ためにのためです|21 - 30| = 9
。指定された整数がフィボナッチ数列に属する場合、最も近いフィボナッチ数はそれ自体です。たとえば、最も近いフィボナッチ数
13
はになり13
ます。同点の場合、入力に最も近いフィボナッチ数のいずれかを出力するか、両方を出力するかを選択できます。たとえば、入力がの場合、
17
次のすべてが有効です:21
、13
または21, 13
。両方を返却する場合は、形式を明記してください。
デフォルトの抜け穴が適用されます。任意の標準的な方法で入力を取得し、出力を提供できます。プログラム/関数は、10 8までの値のみを処理する必要があります。
テストケース
入力->出力 1-> 1 3-> 3 4-> 3または5または3、5 6-> 5 7-> 8 11-> 13 17-> 13または21または13、21 63-> 55 101-> 89 377-> 377 467-> 377 500-> 610 1399-> 1597
得点
これはcode-golfなので、すべての言語でバイト単位の最短コードが勝ちます!
n
意味しn ≥ 1
ます。