Mini golf de lunes: una serie de desafíos de código corto de golf , publicados (¡con suerte!) Todos los lunes.
Se obtiene una secuencia similar a Fibonacci utilizando el mismo método que la famosa secuencia de Fibonacci ; es decir, cada número F (n) se encuentra sumando los dos números anteriores en la secuencia ( F (n) = F (n-1) + F (n-2) ), o restando los dos números siguientes ( F (n) = F (n + 2) - F (n + 1) ). La principal diferencia es que estas secuencias pueden comenzar con dos números cualquiera. La indexación cero de estas secuencias es discutible, pero por ahora, vamos a usar esta regla:
- El número 0 en una secuencia similar a Fibonacci es el último número que es más pequeño que el número anterior.
Como ejemplo, la secuencia de Fibonacci podría escribirse como 1, 0, 1, 1, 2, 3, 5...
, por lo que el número 0 en la secuencia es el único 0
.
Reto
El objetivo del desafío es escribir un programa o función que tome tres enteros, en cualquier formato:
- A y B , los dos números con los que comenzar a generar una secuencia.
- N , la longitud de la secuencia resultante a la salida.
Y genera los primeros N números de la secuencia, comenzando en el 0.
Detalles
- A , B y N pueden tomarse en cualquier orden y formato, siempre que estén visiblemente separados. Si utiliza un orden / formato diferente, especifique cuál es.
- Puede suponer que A , B y N son siempre enteros positivos.
- Puede suponer que N no es más de 100 y que la secuencia resultante no contendrá
x >= 2^31
. - Si A es mayor que B , entonces B es el número 0 de la secuencia.
- La salida debe estar separada por espacios, comas y / o nuevas líneas.
- Se permite un espacio final o una nueva línea, pero no una coma final.
Casos de prueba
Ejemplo 1:
8 13 10
Trabajando hacia atrás desde 8 13
que encontramos un número mayor que el anterior, obtenemos 13 8 5 3 2 1 1 0 1
. Por lo tanto, 0
es el número 0 en esta secuencia. Trabajando a partir de esto, imprimimos 0
y los siguientes 9 miembros:
0 1 1 2 3 5 8 13 21 34
Ejemplo 2
23 37 5
Nuevamente trabajando hacia atrás para encontrar el número 0, encontramos 37 23 14 9 5 4 1 3
. Esta vez el número 0 es 1
, así que lo imprimimos, junto con los siguientes 4 miembros:
1 4 5 9 14
Ejemplo 3
4 3 8
Con este, no tenemos que trabajar hacia atrás para encontrar el número 0, porque 3
es más pequeño que 4
:
3 7 10 17 27 44 71 115
Ejemplo 4
29 47 11
Resultado:
1 3 4 7 11 18 29 47 76 123 199
Tanteo
Este es el código de golf , por lo que gana el código válido más corto en bytes. Tiebreaker va a la presentación publicada anteriormente. El ganador será elegido el próximo lunes 28 de septiembre. ¡Buena suerte!
Editar: ¡ Felicidades a tu ganador, @Jakube, por usar Pyth por unos increíbles 23 bytes!
[8, 13, 10]
)?