La séquence N-bonacci, inventée à l'origine par @DJMcMayhem dans cette question , est une séquence générée en commençant par les nombres entiers 0 et 1, puis en ajoutant les nombres N précédents pour générer le nombre suivant. La séquence N-bonacci spéciale est une séquence N-bonacci commençant par une paire de nombres autres que 0 et 1, qui seront nommés X et Y. Si N est supérieur au nombre de termes déjà dans la séquence, ajoutez simplement tous les disponibles termes.
Ainsi, par exemple, la séquence normale de fibonacci a un N de 2 (prend les deux éléments précédents), et un X et Y de 0 et 1, ou 1 et 1, selon qui vous demandez.
Ta tâche:
Vous devez écrire un programme ou une fonction qui vérifie si un entier entré (A) fait partie de la séquence N-bonacci spéciale générée par les trois prochains entiers (en utilisant la deuxième entrée comme N et les troisième et quatrième comme X et Y) . Assurez-vous de gérer le cas spécial de N = 1.
Contribution:
Quatre entiers non négatifs, A, N, X et Y.
Production:
Une valeur de vérité / fausse qui indique si A fait partie de la séquence N-bonacci générée par les entrées N, X et Y.
Cas de test:
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.
Notation:
Il s'agit de code-golf , donc le score le plus bas en octets l'emporte.
la source
N==1
est un cas si étrange.N=1
, vous voudrez peut-être l'appeler dans la question, car de nombreuses réponses (y compris toutes les réponses actuelles, je pense) auront une condition d'échec qui suppose une série strictement croissante. En outre, peut-X
ilY
être négatif? Cela invalidera probablement également toutes les réponses existantes.8,1,8,9
et9,1,8,9
vous assurer que laN=1
gestion des cas détecte laX
valeur non répétée ainsi que laY
valeur. (Si vous souhaitez gérer les0,0
cas, vous devez également l'ajouter.)Réponses:
Gelée , 12 octets
Un programme complet prenant
[X,Y]
,N
,A
.Essayez-le en ligne!
Comment?
la source
⁵e
de la fin; beaucoup plus facile à dire que cela fonctionnera alors (en notant que l'ordre des deux premiers termes est sans conséquence).05AB1E , 18 octets
Essayez-le en ligne!
Les usages:
[X,Y], N, A
J'ai l'impression que certaines fonctionnalités involontaires ont rendu cela plus difficile que nécessaire.
Il n'y a pas de supérieur ou égal à, je n'avais jamais remarqué cela auparavant.
Et
#³
n'a pas fonctionné, et a nécessité un]
, pour +1 octets#]³
.la source
Python 2 ,
5956 octetsEssayez-le en ligne!
Prend l'entrée comme
A,N,[X,Y]
la source
Perl 6 , 47 octets
Essaye-le
Étendu:
la source
Python 2, 50 octets
Prend l'entrée comme
A,N,[Y,X]
. Sorties via code de sortie.Essayez-le en ligne!
la source
R ,
6960 octetsEssayez-le en ligne!
Renvoie une fonction anonyme, prenant
a,n
et un vecteurl=c(y,x)
. Construit la séquence N-bonacci à l'envers (c'est-à-direwhile(l<a)
qu'un index plus petit est plus loin dans la séquence), car ne vérifie que le premier élément del
.la source
Lisp commun, 164 octets
Cette fonction renvoie
NIL
pour faux, non NIL pour vrai (selon la définition du booléen généralisé de Common Lisp).la source
N=1
détecterA
, par exemple, les deux1
et / ou2
quandX=1 Y=2
? Mes compétences en lecture Lisp ne sont pas excellentes, mais il semble que vous ne puissiez vous comparerA
qu'à l'une des deux valeurs initiales.k, 29 octets
Essayez-le en ligne!
1
est véridique,0
est falsey. L'entrée est[A;N;X,Y]
.la source
PHP> = 7.1, 103 octets
Cas de test
la source
Mathematica, 94 octets
format d'entrée
la source