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.