Probabilmente hai sentito parlare dei numeri di Fibonacci. Sai, quella sequenza intera che inizia con 1, 1
, e quindi ogni nuovo numero è la somma degli ultimi due?
1 1 2 3 5 8 13...
E così via. Le sfide sui numeri di Fibonacci sono piuttosto popolari qui . Ma chi dice che i numeri di Fibonacci debbano iniziare 1, 1
? Perché non potevano iniziare 0, 1
? Bene, ridefiniamoli per iniziare da 0:
0 1 1 2 3 5 8 13...
Ma ... Non dobbiamo nemmeno fermarci qui! Se possiamo aggiungere gli ultimi due numeri per ottenere il successivo, possiamo anche sottrarre il primo numero dal secondo numero per anteporre un nuovo numero. Quindi potrebbe iniziare con 1, 0
:
1 0 1 1 2 3 5 8 13...
Possiamo anche finire con aspetti negativi:
-1 1 0 1 1 2 3 5 8 13...
E questa serie continua anche per sempre. Penso che sia interessante il modo in cui finisce per rispecchiare i normali numeri di Fibonacci, solo con ogni altro numero reso negativo:
13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Chiamiamo questa serie "Extended Fibonacci Number", o EFN . Dal momento che non c'è davvero un numero negativo evidente per iniziare questa serie, diremo che 0 appare a 0 , i numeri di Fibonacci regolari si estendono agli indici positivi e i numeri di Fibonacci negativi (semi-negativi?) negli indici negativi, in questo modo:
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...
Questo porta alla sfida di oggi:
Dato un numero intero N , restituisce ogni indice in corrispondenza del quale N appare nella serie EFN .
Alcune osservazioni casuali su questo compito:
1 appare più volte nella EFN rispetto a qualsiasi altro numero:
[-1, 1, 2]
. Nessun numero apparirà in più di 3 posti.Ogni numero di Fibonacci> 1 verrà visualizzato una volta (3, 8, 21, ecc.) O due volte (2, 5, 13, ecc.)
Chiarimenti sulle regole:
- Se
abs(N)
non è un numero di Fibonacci, non apparirà mai nella serie EFN , quindi è necessario generare nulla / una raccolta vuota, se possibile, o se ciò non è possibile nella propria lingua, è possibile generare un valore non numerico costante. - Se N appare in più punti dell'EFN , l'output non deve essere ordinato. Sebbene ogni indice debba apparire esattamente una volta.
- Sebbene la maggior parte delle sfide di sequenza consentano di scegliere se si desidera utilizzare l'indicizzazione basata su 1 o su 0, questa sfida deve utilizzare l'indicizzazione descritta (dove 0 appare su 0).
- È possibile eseguire l'I / O in qualsiasi formato standard.
Casi test
-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]
E alcuni casi di test più grandi:
89: [-11, 11]
1836311903: [46]
10000: []
-39088169: [-38]
Come al solito, vince la risposta più breve in byte!