Probablemente todos conozcan la secuencia de Fibonacci:
fibonacci(n)=fibonacci(n-1)+fibonacci(n-2)
fibonacci(0)=0
fibonacci(1)=1
Su tarea es tan simple como podría ser:
- Dada número entero
N
de cómputofibonacci(n)
pero aquí está el giro:
- También hacer negativo
N
Espere. ¿Qué?
fibonacci(1)=fibonacci(0)+fibonacci(-1)
asi que
fibonacci(-1)=1
y
fibonacci(-2)=fibonacci(0)-fibonacci(1)=-1
y así...
- Este es un código de golf por lo que el programa más corto en bytes gana.
- Puede enviar una función o un programa completo
- N está en [-100,100]
Testcase (s) en CSV:
-9;-8;-7;-6;-5;-4;-3;-2;-1;0;1;2;3;4;5;6;7;8
34;-21;13;-8;5;-3;2;-1;1;0;1;1;2;3;5;8;13;21
Insinuación:
n <0 y n & 1 == 0:
fibonacci(n)=fibonacci(abs(n))*-1
Respuestas:
Mathematica, 9 bytes
Sí, esta función integrada admite números negativos.
fuente
Octava, 20 bytes
Pruébalo en línea!
Explicación
Esto hace uso del hecho de que la secuencia de Fibonacci
f(n)
se puede escribir como (esto debería ser una notación de vector de matriz):Recursivamente:
Explícitamente:
Esto significa que la entrada superior derecha de esta matriz a la potencia de
n
es el valorf(n)
que estamos buscando. Obviamente, también podemos invertir esta matriz, ya que tiene rango completo, y la relación todavía describe la misma relación de recurrencia. Eso significa que también funciona para entradas negativas.fuente
ans(-6)
destinado a ser positivo?Máximo, 3 bytes
admite números positivos y negativos.
Pruébelo (pegue) en CESGA - Maxima en línea
fuente
Python, 43 bytes
Una fórmula directa con la proporción áurea
g
. Conf
la función anterior:Misma longitud alt, solo alias la raíz cuadrada de 5:
No vi una manera de hacer una función recursiva que pudiera competir con estos. Un intento moderado de 57 bytes:
A modo de comparación, un método iterativo (60 bytes en Python 2):
O, para 58 bytes:
fuente
JavaScript (ES6), 42 bytes
Prueba
Mostrar fragmento de código
fuente
MATL ,
119 bytesEstoy contento con elGracias @LuisMendo por -2 bytes =)[3,2]
, que seguramente se podría jugar al golf, si alguien conoce una forma, hágamelo saber =) (También funcionaría con[1,3]
).Esto está utilizando el mismo enfoque que la respuesta de Octave . Pero para generar la matriz
simplemente convertimos el número
3
y2
de decimal a binario (es decir,11
y10
).Pruébalo en línea!
fuente
JavaScript (ES7) 37 bytes
Utiliza la fórmula de Binet .
Esto genera el
n
th número de Fibonacci + -0.0000000000000005
.fuente
**
requiere ES7.1-p
lugar de-1/p
debería haber funcionado para el mismo ahorro.Jolf, 2 bytes
Pruébalo aquí!
El fibonacci incorporado, implementado utilizando la
phi
fórmula.fuente
Haskell, 51 bytes
fuente
,
en lugar de&&
:even z,z<0
.Potencia Shell , 112 bytes
Llamada de demostración:
Salida de demostración:
fuente
Lithp , 88 bytes
Mi mirada a todos esos paréntesis .
Pruébalo en línea!
No muy pequeño en realidad. Actualmente hay un error de análisis que requiere uno para usar
(get N)
o en(+ N)
lugar de simplementeN
. Elegí el más pequeño. Sin embargo, no creo que se pueda hacer nada más para jugar golf.fuente