Recursão: Achatar as curvas
O aninhamento de listas pode ser visto indiretamente como curvas e barreiras dos dados reais incorporados nas listas e, assim, frustra o próprio propósito de acessá-los diretamente por meio de índices e slices. Neste desafio, é necessária uma função para achatar essas curvas (isto é, nivelar, passar a ferro, comprimir, arrasar, derrubar) e expor esses dados como uma única lista, e não como uma lista de listas.
Exemplos
flatten([[[[[["direction"], [372], ["one"], [[[[[["Era"]]]], "Sruth", 3337]]], "First"]]]])
➞ ["direction", 372, "one", "Era", "Sruth", 3337, "First"]
flatten([[4666], [5394], [466], [[["Saskia", [[[[["DXTD"]], "Lexi"]]]]]]])
➞ [4666, 5394, 466, "Saskia", "DXTD", "Lexi"]
flatten([[696], ["friend"], ["power"], [[[["Marcus"]]]], ["philus"]])
➞ [696, "friend", "power", "Marcus", "philus"]
flatten([[["deep"], [[["ocean"]]], [["Marge"]], ["rase", 876]]])
➞ ["deep", "ocean", "Marge", "rase", 876]Observações
- Não há listas vazias para tratar.
- Espera-se que você resolva este desafio usando uma abordagem recursiva.
- Você pode ler mais sobre recursão (consulte a aba Recursos) se ainda não estiver familiarizado com ela ou se ainda não tiver entendido completamente o conceito antes de começar este desafio.