Rutas
/
Elixir
Elixir
/
Ejercicios
/
Operaciones con arrays
Operaciones con arrays

Operaciones con arrays

Media

Instrucciones

Implementa operaciones básicas con listas.

En los lenguajes funcionales, las operaciones con listas como length, map y reduce son muy habituales. Implementa una serie de operaciones básicas con listas, sin usar las funciones que ya existen.

El número y los nombres exactos de las operaciones que hay que implementar dependerán de cada track, para evitar conflictos con nombres ya existentes, pero las operaciones generales que vas a implementar son:

  • append (dadas dos listas, añade todos los elementos de la segunda lista al final de la primera);
  • concatenate (dada una serie de listas, combina todos los elementos de todas las listas en una sola lista aplanada);
  • filter (dados un predicado y una lista, devuelve la lista de todos los elementos para los que predicate(item) es True);
  • length (dada una lista, devuelve el número total de elementos que contiene);
  • map (dadas una función y una lista, devuelve la lista de los resultados de aplicar function(item) a todos los elementos);
  • foldl (dadas una función, una lista y un acumulador inicial, pliega (reduce) cada elemento dentro del acumulador desde la izquierda);
  • foldr (dadas una función, una lista y un acumulador inicial, pliega (reduce) cada elemento dentro del acumulador desde la derecha);
  • reverse (dada una lista, devuelve una lista con todos los elementos originales, pero en orden inverso).

Ten en cuenta que el orden en el que se pasan los argumentos a las funciones de plegado (foldl, foldr) es significativo.

Cambios específicos de Elixir

La descripción anterior de este ejercicio es común a todas las pistas de Exercism.

Para ser coherentes con la biblioteca estándar de Elixir, las funciones utilizadas por foldl y foldr deberían tomar el elemento como primer argumento y el acumulador como segundo.

Además, para no entrar en conflicto con la función Kernel.length/1, que se importa automáticamente, la función que cuenta la longitud se llamará count en su lugar.

Pruebas lentas

Una o varias de las pruebas de este ejercicio se han etiquetado como :slow, porque pueden tardar mucho en terminar. Por este motivo, el ejecutor de pruebas automatizado no las ejecutará en la plataforma. Si estás resolviendo este ejercicio directamente en la plataforma, en el editor web, quizá te convenga descargarlo a tu ordenador en su lugar. Así podrás ejecutar todas las pruebas y comprobar la eficiencia de tu solución.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Elixir Exercism

¿Listo para empezar Operaciones con arrays?

Regístrate en Exercism para aprender y dominar Elixir con 58 conceptos168 ejercicios y mentoría humana real, todo gratis.

¡Análisis en profundidad de Operaciones con arrays!

Disfruta de una introducción práctica a la recursión, explora las alternativas imperativas y funcionales a Operaciones con arrays y sumérgete en la recursión de cola y las funciones acumuladoras.