Mini-golfe de segunda-feira: Uma série de desafios curtos de golfe com código , publicados (espero!) Toda segunda-feira.
Uma sequência semelhante a Fibonacci é obtida usando o mesmo método que a famosa sequência de Fibonacci ; ou seja, cada número F (n) é encontrado adicionando os dois números anteriores na sequência ( F (n) = F (n-1) + F (n-2) ) ou subtraindo os próximos dois números ( F (n) = F (n + 2) - F (n + 1) ). A principal diferença é que essas seqüências podem começar com dois números. A indexação zero dessas seqüências é discutível, mas por enquanto, vamos usar esta regra:
- O número 0 em uma sequência semelhante a Fibonacci é o último número que é menor que o número anterior.
Como exemplo, a sequência de Fibonacci pode ser escrita como 1, 0, 1, 1, 2, 3, 5...
, portanto, o número 0 na sequência é o único 0
.
Desafio
O objetivo do desafio é escrever um programa ou função que aceite três números inteiros, em qualquer formato:
- A e B , os dois números com os quais começar a gerar uma sequência.
- N , o comprimento da sequência resultante para a saída.
E gera os primeiros N números da sequência, começando no 0º.
Detalhes
- A , B e N podem ser obtidos em qualquer ordem e formato, desde que estejam visivelmente separados. Se você usar um pedido / formato diferente, especifique o que é.
- Você pode assumir que A , B e N são sempre números inteiros positivos.
- Você pode supor que N não exceda 100 e a sequência resultante não conterá
x >= 2^31
. - Se A for maior que B , então B é o número 0 na sequência.
- A saída deve ser separada por espaços, vírgulas e / ou novas linhas.
- Um espaço à direita ou nova linha é permitido, mas não uma vírgula à direita.
Casos de teste
Exemplo 1:
8 13 10
Trabalhando para trás 8 13
até encontrarmos um número maior que o anterior, obtemos 13 8 5 3 2 1 1 0 1
. Assim, 0
é o número 0 nesta sequência. No futuro, imprimimos 0
e os próximos 9 membros:
0 1 1 2 3 5 8 13 21 34
Exemplo 2:
23 37 5
Mais uma vez, trabalhando para trás para encontrar o número 0, encontramos 37 23 14 9 5 4 1 3
. O número 0 desta vez é 1
, então nós o imprimimos, juntamente com os próximos 4 membros:
1 4 5 9 14
Exemplo 3:
4 3 8
Com este, não precisamos retroceder para encontrar o número 0, porque 3
é menor que 4
:
3 7 10 17 27 44 71 115
Exemplo 4:
29 47 11
Resultado:
1 3 4 7 11 18 29 47 76 123 199
Pontuação
Este é o code-golf , pelo que o código válido mais curto em bytes vence. O desempatador vai para a submissão postada anteriormente. O vencedor será escolhido na próxima segunda-feira, 28 de setembro. Boa sorte!
Edit: Parabéns ao seu vencedor, @Jakube, usando Pyth para incríveis 23 bytes!
[8, 13, 10]
)?