La secuencia N-bonacci, originalmente inventada por @DJMcMayhem en esta pregunta , es una secuencia generada al comenzar con los enteros 0 y 1, y luego agregar los números N anteriores para generar el siguiente número. La secuencia especial de N-bonacci es una secuencia de N-bonacci que comienza con un par de números distintos de 0 y 1, que se denominarán X e Y. Si N es mayor que el número de términos que ya están en la secuencia, simplemente agregue todos los disponibles condiciones.
Entonces, por ejemplo, la secuencia normal de Fibonacci tiene un N de 2 (toma los dos elementos anteriores) y una X e Y de 0 y 1, o 1 y 1, dependiendo de a quién le pregunte.
Tu tarea:
Debe escribir un programa o función que verifique si un entero ingresado (A) es parte de la secuencia especial de N-bonacci generada por los siguientes tres enteros (utilizando la segunda entrada como N, y el tercero y cuarto como X e Y) . Asegúrese de manejar el caso especial de N = 1.
Entrada:
Cuatro enteros no negativos, A, N, X e Y.
Salida:
Un valor verdadero / falso que indica si A es parte de la secuencia N-bonacci generada por las entradas N, X e Y.
Casos de prueba:
Input: Output:
13,2,0,1->truthy
12,3,1,4->falsy
4,5,0,1-->truthy
8,1,8,9-->truthy
9,1,8,9-->truthy
12,5,0,1->falsy [0,1]>[0,1,1]>[0,1,1,2]>[0,1,1,2,4]>[0,1,1,2,4,8]>[0,1,1,2,4,8,16]>etc.
Puntuación:
Este es el código de golf , por lo que gana la puntuación más baja en bytes.
N==1
Es un caso tan extraño.N=1
, es posible que desee mencionarlo en la pregunta, ya que muchas respuestas (incluidas todas las respuestas actuales, creo) tendrán una condición de falla que supone una serie estrictamente creciente. Además, ¿puedeX
yY
ser negativo? Eso probablemente también invalidará todas las respuestas existentes.8,1,8,9
y9,1,8,9
asegurarse de que elN=1
manejo de casos detecte elX
valor no repetido y elY
valor. (Si desea manejar0,0
casos, debe agregar eso también.)Respuestas:
Jalea , 12 bytes
Una toma de programa completo
[X,Y]
,N
,A
.Pruébalo en línea!
¿Cómo?
fuente
⁵e
del final; mucho más fácil decir que funcionará entonces (observando que el orden de los dos primeros términos no tiene ninguna consecuencia).05AB1E , 18 bytes
Pruébalo en línea!
Usos:
[X,Y], N, A
Siento que alguna funcionalidad no deseada hizo que fuera más difícil de lo necesario.
No hay mayor que o igual a, nunca antes lo había notado.
Y
#³
no funcionó, y requirió a]
, para +1 bytes#]³
.fuente
Python 2 ,
5956 bytesPruébalo en línea!
Toma entrada como
A,N,[X,Y]
fuente
Perl 6 , 47 bytes
Pruébalo
Expandido:
fuente
Python 2, 50 bytes
Toma entrada como
A,N,[Y,X]
. Salidas a través del código de salida.Pruébalo en línea!
fuente
R ,
6960 bytesPruébalo en línea!
Devuelve una función anónima, tomando
a,n
y un vectorl=c(y,x)
. Construye la secuencia de N-bonacci hacia atrás (es decir, un índice más pequeño está más adelante en la secuencia), ya quewhile(l<a)
solo verifica el primer elemento del
.fuente
Lisp común, 164 bytes
Esta función devuelve
NIL
falso, no NIL para verdadero (según la definición de booleano generalizado de Common Lisp).fuente
N=1
detectar unaA
de, por ejemplo, ambas1
y / o2
cuándoX=1 Y=2
? Mis habilidades de lectura Lisp no son excelentes, pero parece que solo se puede compararA
con uno de los dos valores iniciales.k, 29 bytes
Pruébalo en línea!
1
es verdad,0
es falsey. Entrada es[A;N;X,Y]
.fuente
PHP> = 7.1, 103 bytes
Casos de prueba
fuente
Mathematica, 94 bytes
formato de entrada
fuente