Probablemente hayas oído hablar de los números de Fibonacci. Ya sabes, esa secuencia entera que comienza con 1, 1
, y luego cada nuevo número es la suma de los dos últimos.
1 1 2 3 5 8 13...
Y así. Los desafíos sobre los números de Fibonacci son bastante populares aquí . ¿Pero quién dice que los números de Fibonacci tienen que comenzar 1, 1
? ¿Por qué no podían empezar 0, 1
? Muy bien, redefinímoslos para comenzar en 0:
0 1 1 2 3 5 8 13...
Pero ... ¡tampoco tenemos que parar allí! Si podemos sumar los dos últimos números para obtener el siguiente, también podríamos restar el primer número del segundo número para anteponer un nuevo número. Entonces podría comenzar con 1, 0
:
1 0 1 1 2 3 5 8 13...
Incluso podemos terminar con negativos:
-1 1 0 1 1 2 3 5 8 13...
Y esta serie también continúa para siempre. Creo que es interesante cómo termina reflejando los números normales de Fibonacci, solo con cualquier otro número negativo:
13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
Llamemos a esta serie el "Número de Fibonacci extendido", o EFN . Como no hay realmente un número negativo obvio para comenzar esta serie, diremos que 0 aparece en 0 , los números regulares de Fibonacci se extienden a los índices positivos, y los números negativos de Fibonacci (¿medio negativos?) en los índices negativos, así:
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...
Esto lleva al desafío de hoy:
Dado un número entero N , devuelve cada índice en el que aparece N en la serie EFN .
Algunas observaciones aleatorias sobre esta tarea:
1 aparece más veces en el EFN que cualquier otro número:
[-1, 1, 2]
. Ningún número aparecerá en más de 3 lugares.Cada número de Fibonacci> 1 aparecerá una vez (3, 8, 21, etc.) o dos veces (2, 5, 13, etc.)
Aclaraciones de reglas:
- Si
abs(N)
no es un número de Fibonacci, nunca aparecerá en la serie EFN , por lo que no debe generar nada / una colección vacía si es posible, o si eso no es posible en su idioma, puede generar un valor no numérico constante. - Si N aparece en varios lugares en el EFN , su salida no necesita ser ordenada. Aunque cada índice debe aparecer exactamente una vez.
- Aunque la mayoría de los desafíos de secuencia le permiten elegir si desea usar la indexación basada en 1 o en 0, este desafío debe usar la indexación descrita (donde 0 aparece en 0).
- Puede tomar E / S a través de cualquier formato estándar.
Casos de prueba
-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]
Y algunos casos de prueba más grandes:
89: [-11, 11]
1836311903: [46]
10000: []
-39088169: [-38]
Como de costumbre, ¡la respuesta más corta en bytes gana!