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 13que encontramos un número mayor que el anterior, obtenemos 13 8 5 3 2 1 1 0 1. Por lo tanto, 0es el número 0 en esta secuencia. Trabajando a partir de esto, imprimimos 0y 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 3es 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])?