Recursão: ordenar e encontrar
Neste desafio, vamos levar a recursão ao próximo nível, incorporando uma função recursiva dentro de outra função recursiva.
Escreva uma função que ordene as strings de um array (se a string for um palíndromo, ela passará a fazer parte do array ordenado) e encontre a string não palindrômica mais longa.
Embora essas tarefas possam ser realizadas com algumas funções integradas de Array, o propósito e a intenção deste desafio é que você as resolva recursivamente.
Estrutura da saída
{longest: longest_non_palindromic, length: longest_length, palindromes: [...palindromic_strings]}Exemplos
qualify(["wow", "relevance", "radar", "soundly", "intelligence", "racecar", "gradually"]) ➞ {"longest": "intelligence", "length": 12, "palindromes": ["racecar", "radar", "wow"]}
qualify(["persistence", "anna", "civic", "perseverance", "kayak", "irrefutability"]) ➞ {"longest": "irrefutability", "length": 14, "palindromes": ["anna", "civic", "kayak"]}
qualify(["level", "resistance", "madam", "arrogance", "unconsiderably", "mom", "noon"]) ➞ {"longest": "unconsiderably", "length": 14, "palindromes": ["level", "madam", "mom", "noon"]}Observações
- Todos os itens do array estão em letras minúsculas.
- Quando duas palavras mais longas forem encontradas, retorne a primeira.
- O uso das funções
reduce(),reduceRight(),map(),filter(),indexOf()emax()é restrito. - Você pode ler mais sobre recursão (consulte a aba Resources) se ainda não estiver familiarizado com ela ou se ainda não tiver entendido completamente o conceito antes de começar este desafio.
- Se você acha que recursão é divertida, confira esta coleção.