A sequência N-bonacci, originalmente inventada por @DJMcMayhem nesta pergunta , é uma sequência gerada iniciando com os inteiros 0 e 1 e adicionando os números N anteriores para gerar o próximo número. A sequência N-bonacci especial é uma sequência N-bonacci que começa com um par de números diferentes de 0 e 1, que será nomeado X e Y. Se N for maior que o número de termos já na sequência, basta adicionar todos os termos.
Por exemplo, a sequência normal de fibonacci tem um N de 2 (pega os dois itens anteriores) e um X e Y de 0 e 1, ou 1 e 1, dependendo de quem você perguntar.
Sua tarefa:
Você deve escrever um programa ou função que verifique se um número inteiro inserido (A) faz parte da sequência N-bonacci especial gerada pelos próximos três números inteiros (usando a segunda entrada como N e a terceira e quarta como X e Y) . Certifique-se de lidar com o caso especial de N = 1.
Entrada:
Quatro números inteiros não negativos, A, N, X e Y.
Resultado:
Um valor de verdade / falsidade que indica se A faz parte da sequência N-bonacci gerada pelas entradas N, X e Y.
Casos de teste:
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.
Pontuação:
Isso é código-golfe , então a pontuação mais baixa em bytes vence.
N=1
, convém mencioná-lo na pergunta, pois muitas respostas (incluindo todas as respostas atuais, eu acho) terão uma condição de falha que assume uma série estritamente crescente. Além disso, pode X
e Y
é negativo? Isso provavelmente também invalidará todas as respostas existentes.
8,1,8,9
e 9,1,8,9
garantir que o N=1
tratamento de casos detecte o X
valor não repetido e o Y
valor. (Se você quiser lidar com 0,0
casos você deve adicionar isso também.)
N==1
é um caso tão estranho.