Para este desafío, debe generar el resultado de la suma de algunos números. ¿Qué son estos números? Bueno, se le da entrada, ( a
, b
), que son enteros (positivo, negativo o cero) a != b
, y a < b
, y cada entero dentro a
y b
(incluyéndolos) tendrá exponentes de acuerdo con los números de Fibonacci. Eso es confuso, así que aquí hay un ejemplo:
Input: (-2, 2)
Output: -2**1 + (-1**1) + 0**2 + 1**3 + 2**5 =
-2 + -1 + 0 + 1 + 32 = 30
Dado que el primer número de Fibonacci está representado por f(0)
, la fórmula es:
a**f(0) + ... + b**f(b-a+1)
Entrada, procesamiento, salida
Para aclarar lo anterior, aquí hay algunos casos de prueba, el procesamiento de la entrada y las salidas esperadas:
Input: (1, 2)
Processing: 1**1 + 2**1
Output: 3
Input: (4, 8)
Processing: 4**1 + 5**1 + 6**2 + 7**3 + 8**5
Output: 33156
Input: (-1, 2)
Processing: -1**1 + 0**1 + 1**2 + 2**3
Output: 8
Input: (-4, -1)
Processing: -4**1 + -3**1 + -2**2 + -1**3
Output: -4
Reglas
No se permiten lagunas estándar
Los exponentes deben estar en orden de acuerdo con la serie de Fibonacci
El código debe funcionar para los casos de prueba anteriores
Solo la salida necesita ser devuelta
Criterios ganadores
¡El código más corto gana!
0
¿no está incluido en los números de Fibonacci aquí?Respuestas:
05AB1E , 9 bytes
Pruébalo en línea!
No funciona en TIO para grandes discrepancias entre
a
yb
(EG[a..b].length() > 25
).Pero parece funcionar para números más grandes que la respuesta promedio aquí.
Ineficiente, porque calcula la secuencia de Fibonacci hasta
n!
, que es más de lo necesario para calcular la respuesta, donden
está la longitud de la secuencia dea..b
.fuente
Mathematica,
38 bytes37 bytes31 bytesEsta es solo la respuesta de rahnema1 portada a Mathematica. A continuación se muestra mi solución original:
Explicación:
##
representa la secuencia de todos los argumentos,#
representa el primer argumento,#2
representa el segundo argumento. Cuando se llama con dos argumentosa
yb
,Range[##]
dará la lista{a, a+1, ..., b}
yRange[#2-#+1]
dará la lista de la misma longitud{1, 2, ..., b-a+1}
. ComoFibonacci
esListable
,Fibonacci@Range[#2-#+1]
dará una lista de los primerosb-a+1
números de Fibonacci. ComoPower
esListable
, llamarlo en dos listas de igual longitud lo enhebrará sobre las listas. LuegoTr
toma la suma.Editar: Guardado 1 byte gracias a Martin Ender.
fuente
Range@##
.Tr[(r=Range@##)^Fibonacci[r-#+1]]&
.Range
dos veces debería haber sido una bandera roja. ¡Gracias!Python , 49 bytes
Una lambda recursiva que toma
a
yb
como argumentos separados (también puede establecer los dos primeros números de fibonaccix
yy
, a lo que quiera, no intencional, sino una buena característica):Pruébalo en línea! (incluye suite de pruebas)
Sugerencias de golf bienvenidas.
fuente
-~a
y no simplementea+1
? Creo que-~a
depende de la máquina.Perl 6 ,
3230 bytes$^a
y$^b
son los dos argumentos de la función;$^a..$^b
es el rango de números de$^a
a$^b
, que es comprimido con exponenciación porZ**
con la secuencia de Fibonacci,1, &[+] ... *
.Gracias a Brad Gilbert por reducir dos bytes.
fuente
(1,&[+]...*)
es un byte más corto yZ**
no se necesita espacio después .&infix:<+>
puede aceptar 0,1 o 2 argumentos. (&[+]
es una forma corta de escribir&infix:<+>
). El WhateverCode* + *
acepta exactamente 2 argumentos. (&[0]() == 0
por lo que debe tener1
allí para comenzar la secuencia)Máxima, 32 bytes
fuente
Pyke, 11 bytes
Pruébalo aquí!
fuente
JavaScript (ES7), 42 bytes
Puerto directo de la excelente respuesta de Python de @ FlipTack.
fuente
Haskell, 35 bytes
Uso:
fuente
o
en un operador infijo, comoa#b=sum...
.(a,b)
comoa?b
¿por qué no se nos permite prepararlo tan inmediata[a..b]?f
a(?)=sum.zipWith(^)
?MATL , 23 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
fuente
R, 51 bytes
Una función anónima.
fuente
Jalea , 13 bytes
Pruébalo en línea!
fuente
f(1,25)
;;. +1Ruby, 46 bytes
Nada particularmente inteligente u original para ver aquí. Lo siento.
fuente
ℤ.upto(ℤ)
método es un buen recordatorio de la belleza del comportamiento de Ruby en todos los objetos. Seguir jugando golf el código se deja como ejercicio para los hablantes nativos de Ruby. ¿ Ya escaneó codegolf.stackexchange.com/questions/363/… ?Java 7, 96 bytes
Golfizado:
Sin golf:
fuente
R, 57 bytes
Muy claro.
gmp::fibnum
es una versión incorporada más corta, pero no admite devolver toda la secuencian
, lo quenumbers::fibonacci
hace agregando el argumentoT
.Primero tuve una solución más complicada con la
gmp::fibnum
que terminé 2 bytes más que esta solución.fuente
scan()
guardar 6 bytes; Vea mi solución publicada.cc , 56 bytes
Termina para la entrada
[1,30]
en 51 segundos. Toma las dos entradas en dos líneas separadas una vez ejecutadas y los números negativos con un guión bajo (_
) en lugar de un guión (es decir-4
, se ingresarán como_4
).fuente
PHP,
7775 bytestoma límites de los argumentos de la línea de comando. Corre con
-nr
.mostrando nuevamente las variables variables de PHP (y lo que he descubierto sobre ellas) .
Descompostura
La respuesta de FlipTack portada a PHP tiene 70 bytes:
fuente
Axioma, 65 bytes
código de prueba y resultados
fuente
PowerShell , 67 bytes
Pruébalo en línea!
Encontré una forma ligeramente mejor de hacer la secuencia, pero powershell no se compara con otros idiomas para este :)
fuente