Recursión: ordenar y encontrar

En este desafío, llevaremos la recursión al siguiente nivel, ya que incluiremos una función recursiva dentro de otra función recursiva.

Escribe una función que ordene las cadenas de un array (si la cadena es un palíndromo, pasará a formar parte del array ordenado) y encuentre la cadena no palindrómica más larga.

Aunque estas tareas se pueden lograr usando algunas funciones integradas de Array, el propósito y la intención de este desafío es que las resuelvas de forma recursiva.

Estructura de salida

{longest: longest_non_palindromic, length: longest_length, palindromes: [...palindromic_strings]}

Ejemplos

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"]}

Notas

  • Todos los elementos del array están en minúsculas.
  • Si se encuentran dos palabras más largas, devuelve la primera.
  • El uso de las funciones reduce(), reduceRight(), map(), filter(), indexOf() y max() está restringido.
  • Puedes leer más sobre la recursión (consulta la pestaña Resources) si aún no estás familiarizado con ella o no has comprendido completamente el concepto antes de comenzar este desafío.
  • Si crees que la recursión es divertida, echa un vistazo a esta colección.