Una secuencia de recurrencia binaria es una secuencia definida recursivamente de la siguiente forma:
Esta es una generalización de la x = 1, y = 2, a = [1, 1], alpha = 1, beta = 1secuencia de Fibonacci ( ) y la secuencia de Lucas ( x = 1, y = 2, a = [2, 1], alpha = 1, beta = 1).
El reto
Dada n, x, y, a, alpha, y beta, en cualquier formato razonable, salida de la nésimo término de la secuencia de recurrencia binario correspondiente.
Reglas
- Puede elegir que la secuencia sea indexada en 1 o indexada en 0, pero su elección debe ser coherente en todas las entradas y debe tomar nota de su elección en su respuesta.
- Puede suponer que no se darían entradas inválidas (como una secuencia que termina antes
no una secuencia que hace referencia a términos indefinidos, comoF(-1)oF(k)dóndek > n). Como resultado de esto,xyysiempre será positivo. - Las entradas y salidas siempre serán números enteros, dentro de los límites del tipo entero natural de su idioma. Si su idioma tiene enteros ilimitados, las entradas y salidas estarán dentro del rango
[2**31, 2**31-1](es decir, el rango para un entero de dos con signo de 32 bits). asiempre contendrá exactamente losyvalores (según la definición).
Casos de prueba
Nota: todos los casos de prueba están indexados a 0.
x = 1, y = 2, a = [1, 1], alpha = 1, beta = 1, n = 6 => 13
x = 1, y = 2, a = [2, 1], alpha = 1, beta = 1, n = 8 => 47
x = 3, y = 5, a = [2, 3, 5, 7, 11], alpha = 2, beta = 3, n = 8 => 53
x = 1, y = 3, a = [-5, 2, 3], alpha = 1, beta = 2, n = 10 => -67
x = 5, y = 7, a = [-5, 2, 3, -7, -8, 1, -9], alpha = -10, beta = -7, n = 10 => 39


aen orden inverso cuenta como razonable?Respuestas:
Jalea , 11 bytes
Pruébalo en línea! 1 | 2 | 3 | 4 | 5 5
Cómo funciona
fuente
Python 2, 62 bytes
Una solución recursiva directa. Todas las entradas se toman de STDIN, excepto
ncomo argumento de función, una división que está permitida de manera predeterminada (aunque contenciosa).No parece haber una manera de guardar bytes
and/oren lugar deif/elseporquel[n]podría ser falsey como 0.fuente
Python 2, 59 bytes
Pruébelo en Ideone .
fuente
JavaScript (ES6),
5144 bytesTenga en cuenta que la función tiene un currículum parcial, por ejemplo,
f(1,2,[1,1],1,1)(8)devuelve 34. Costaría 2 bytes hacer que las funciones intermedias sean independientes entre sí (actualmente solo la última función generada funciona correctamente).Editar: ahorré 7 bytes gracias a @Mego que señaló que había pasado por alto que la matriz que se pasa siempre contiene los primeros
yelementos del resultado.fuente
Haskell,
5448 bytesfuente
J, 43 bytes
Dada una secuencia inicial de términos A , calcula el siguiente término n veces usando los parámetros de x , y , α y β . Posteriormente, se selecciona el n º término de la secuencia extendida y la emite como el resultado.
Uso
Como J solo admite 1 o 2 argumentos, agrupo todos los parámetros como una lista de listas en recuadro. Los valores iniciales A son primero, seguidos por los parámetros de x e y como una lista, seguidos por los parámetros de α y β como una lista, y terminando con el valor n .
fuente