La sequenza N-bonacci, originariamente inventata da @DJMcMayhem in questa domanda , è una sequenza generata iniziando con gli interi 0 e 1, quindi aggiungendo i precedenti numeri N per generare il numero successivo. La speciale sequenza N-bonacci è una sequenza N-bonacci che inizia con una coppia di numeri diversi da 0 e 1, che saranno denominati X e Y. Se N è maggiore del numero di termini già presenti nella sequenza, è sufficiente aggiungere tutti i disponibili termini.
Quindi, ad esempio, la normale sequenza di fibonacci ha una N di 2 (prende le due voci precedenti) e una X e Y di 0 e 1, oppure 1 e 1, a seconda di chi chiedi.
Il tuo compito:
Devi scrivere un programma o una funzione che controlli se un intero immesso (A) fa parte della sequenza speciale N-bonacci generata dai successivi tre numeri interi (usando il secondo input come N e il terzo e il quarto come X e Y) . Assicurati di gestire il caso speciale di N = 1.
Ingresso:
Quattro numeri interi non negativi, A, N, X e Y.
Produzione:
Un valore di verità / falsità che indica se A fa parte della sequenza N-bonacci generata dagli input N, X e Y.
Casi 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.
punteggio:
Questo è code-golf , quindi vince il punteggio più basso in byte.
N=1
, potresti volerlo chiamare nella domanda, dal momento che molte risposte (comprese tutte le risposte attuali, penso) avranno una condizione di fallimento che presuppone una serie strettamente crescente. Inoltre, può X
ed Y
essere negativo? Ciò probabilmente invaliderà anche tutte le risposte esistenti.
8,1,8,9
e 9,1,8,9
assicurarti che la N=1
gestione dei casi rilevi il X
valore non ripetuto e il Y
valore. (Se si desidera gestire i 0,0
casi, è necessario aggiungere anche quello.)
N==1
è un caso così strano.