Para esse desafio, você deve exibir o resultado da soma de alguns números. Quais são esses números? Bem, você recebe uma entrada ( a
, b
), que são números inteiros (positivos, negativos ou zero) a != b
, e a < b
, e cada número inteiro dentro a
e b
(incluindo eles) terá expoentes de acordo com os números de Fibonacci. Isso é confuso, então aqui está um exemplo:
Input: (-2, 2)
Output: -2**1 + (-1**1) + 0**2 + 1**3 + 2**5 =
-2 + -1 + 0 + 1 + 32 = 30
Dado que o primeiro número de Fibonacci é representado por f(0)
, a fórmula é:
a**f(0) + ... + b**f(b-a+1)
Entrada, Processamento, Saída
Para esclarecer o exposto, aqui estão alguns casos de teste, o processamento da entrada e as saídas 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
Regras
Não são permitidas brechas padrão
Os expoentes devem estar em ordem de acordo com a série Fibonacci
O código deve funcionar para os casos de teste acima
Somente a saída precisa ser retornada
Critérios Vencedores
O menor código vence!
0
não está incluído nos números de fibonacci aqui?Respostas:
05AB1E , 9 bytes
Experimente online!
Não funciona no TIO para grandes discrepâncias entre
a
eb
(EG[a..b].length() > 25
).Mas parece funcionar para números maiores do que a resposta média aqui.
Ineficiente, porque calcula a sequência de fibonacci até
n!
, o que é mais do que o necessário para calcular a resposta, onden
está o comprimento da sequência dea..b
.fonte
Mathematica,
38 bytes37 bytes31 bytesEsta é apenas a resposta de rahnema1 portada para o Mathematica. Abaixo está minha solução original:
Explicação:
##
representa a sequência de todos os argumentos,#
representa o primeiro argumento,#2
representa o segundo argumento. Quando chamado com dois argumentosa
eb
,Range[##]
dará a lista{a, a+1, ..., b}
eRange[#2-#+1]
a lista do mesmo tamanho{1, 2, ..., b-a+1}
. ComoFibonacci
éListable
,Fibonacci@Range[#2-#+1]
dará uma lista dos primeirosb-a+1
números de Fibonacci. ComoPower
éListable
, chamá-lo em duas listas de igual comprimento o encadeará sobre as listas. EntãoTr
pega a soma.Editar: salvou 1 byte graças a Martin Ender.
fonte
Range@##
.Tr[(r=Range@##)^Fibonacci[r-#+1]]&
.Range
duas vezes deveria ter sido uma bandeira vermelha. Obrigado!Python , 49 bytes
Um lambda recursivo que recebe
a
eb
como argumentos separados (você também pode definir os dois primeiros números de fibonaccix
ey
, como desejar - não intencional, mas um recurso interessante):Experimente online! (inclui suíte de testes)
Sugestões de golfe são bem-vindas.
fonte
-~a
e não simplesmentea+1
? Eu acho-~a
que depende da máquina.Perl 6 ,
3230 bytes$^a
e$^b
são os dois argumentos para a função;$^a..$^b
é o intervalo de números de$^a
até$^b
, que é compactado com exponenciação pelaZ**
sequência de Fibonacci1, &[+] ... *
,.Obrigado a Brad Gilbert por remover dois bytes.
fonte
(1,&[+]...*)
é um byte mais curto e o espaço a seguirZ**
não é necessário.&infix:<+>
pode aceitar 0,1 ou 2 argumentos. (&[+]
é uma maneira curta de escrever&infix:<+>
). O WhateverCode* + *
aceita exatamente 2 argumentos. (&[0]() == 0
Assim você tem que ter o1
lá para começar a seqüência)Máximos, 32 bytes
fonte
Pyke, 11 bytes
Experimente aqui!
fonte
JavaScript (ES7), 42 bytes
Porta direta da excelente resposta Python do @ FlipTack.
fonte
Haskell, 35 bytes
Uso:
fonte
o
em um operador infix, comoa#b=sum...
.(a,b)
comoa?b
, em seguida, por que não estamos autorizados a prepará-lo tão imediato[a..b]?f
para(?)=sum.zipWith(^)
?MATL , 23 bytes
Experimente online! Ou verifique todos os casos de teste .
fonte
R, 51 bytes
Uma função anônima.
fonte
Gelatina , 13 bytes
Experimente online!
fonte
f(1,25)
trabalhos;). +1Ruby, 46 bytes
Nada particularmente inteligente ou original para ver aqui. Desculpe.
fonte
ℤ.upto(ℤ)
método é um bom lembrete da beleza do comportamento de todos os objetos de Ruby. Golfe adicional o código é deixado como um exercício para falantes nativos de Ruby. Você já digitalizou codegolf.stackexchange.com/questions/363/… ainda?Java 7, 96 bytes
Golfe:
Ungolfed:
fonte
R, 57 bytes
Bem direto.
gmp::fibnum
é um built-in mais curto, mas não suporta o retorno de toda a sequência atén
, o quenumbers::fibonacci
ocorre adicionando o argumentoT
.Primeiro, tive uma solução mais complicada com a
gmp::fibnum
qual terminou 2 bytes a mais que esta solução.fonte
scan()
salvar 6 bytes; veja minha solução postada.dc , 56 bytes
Finaliza a entrada
[1,30]
em 51 segundos. Toma as duas entradas em duas linhas separadas uma vez executadas e números negativos com um sublinhado à esquerda (_
) em vez de um traço (ou seja,-4
seria inserido como_4
).fonte
PHP,
7775 bytestoma limites dos argumentos da linha de comando. Corra com
-nr
.mostrando as variáveis variáveis do PHP novamente (e o que eu descobri sobre elas .
demolir
A resposta do FlipTack portada para PHP tem 70 bytes:
fonte
Axioma, 65 bytes
código de teste e resultados
fonte
PowerShell , 67 bytes
Experimente online!
Encontrei uma maneira um pouco melhor de fazer a sequência, mas o PowerShell não se compara a outros idiomas para este :)
fonte