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 Xe Yé negativo? Isso provavelmente também invalidará todas as respostas existentes.
8,1,8,9e 9,1,8,9garantir que o N=1tratamento de casos detecte o Xvalor não repetido e o Yvalor. (Se você quiser lidar com 0,0casos você deve adicionar isso também.)
N==1é um caso tão estranho.