Divida a string em uma sequência do tipo Fibonacci
A função recebe uma string de dígitos. Crie uma lista de números a partir desses dígitos de modo que:
- O comprimento da lista seja de pelo menos três.
- Todos os números concatenados formem a string original. (Assim, só é possível dividir a string, sem fazer permutações).
- A partir do terceiro número, cada número deve ser igual à soma dos dois números anteriores, isto é,
lst[i - 2] + lst[i - 1] == lst[i] - Um número não pode ter zeros à esquerda, a menos que esse número seja zero. (
0- permitido,01- não permitido) - Cada número da lista deve ser menor que
2^31(para que este desafio seja compatível com linguagens fortemente tipadas).
Encontre a lista de números que satisfaça as propriedades acima e retorne-a. Se não for possível encontrar uma sequência semelhante à de Fibonacci, retorne uma lista vazia [].
Exemplos
split_fibonacci("11235813") ➞ [1, 1, 2, 3, 5, 8, 13]
split_fibonacci("112358130") ➞ []
split_fibonacci("123456579") ➞ [123, 456, 579]
split_fibonacci("0000") ➞ [0, 0, 0, 0]Notas
Alguns testes podem ter várias soluções. Por isso, há uma função auxiliar na janela Tests que verifica se a lista de saída atende aos requisitos. Isso permite certa liberdade para encontrar uma sequência.