Напевно, ви чули про числа Фібоначчі. Ви знаєте, що ціла послідовність, яка починається з 1, 1
, і тоді кожне нове число є сумою останніх двох?
1 1 2 3 5 8 13...
І так далі. Виклики щодо цифр Фібоначчі тут досить популярні . Але хто каже, що числа Фібоначчі повинні починатися 1, 1
? Чому вони не могли почати 0, 1
? Добре, давайте переосмислимо їх, щоб почати з 0:
0 1 1 2 3 5 8 13...
Але ... На цьому ми теж не повинні зупинятися! Якщо ми можемо додати останні два числа, щоб отримати наступне, ми також могли б відняти перше число від другого числа, щоб додати нове число. Отже, це може початися з 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 , повертайте кожен індекс, при якому N з'являється в серії EFN .
Кілька випадкових спостережень за цим завданням:
1 з'являється кілька разів в EFN , ніж будь-яке інше число:
[-1, 1, 2]
. Жодне число не з’явиться у більш ніж 3 місцях.Кожне число Фібоначчі> 1 з’явиться або один раз (3, 8, 21 і т.д.) або двічі (2, 5, 13 і т.д.)
Пояснення правил:
- Якщо
abs(N)
це не число Фібоначчі, воно ніколи не з’явиться в серії EFN , тому ви повинні вивести нічого / порожню колекцію, якщо це можливо, або якщо це неможливо на вашій мові, ви можете вивести деяке постійне нечислове значення. - Якщо N відображається у кількох місцях EFN , ваш вихід не потребує сортування. Хоча кожен індекс повинен з’являтися рівно один раз.
- Хоча більшість викликів послідовності дозволяють вам вибрати, чи хочете ви використовувати індексацію на основі 1 або 0, для цього виклику необхідно використовувати описане індексування (де 0 відображається у 0).
- Ви можете приймати введення-виведення через будь-який стандартний формат.
Випробування
-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]
Як завжди, найкоротша відповідь у байтах виграє!