Rutas
/
Elixir
Elixir
/
Ejercicios
/
Lista de lenguajes
Lista de lenguajes

Lista de lenguajes

Ejercicio de aprendizaje

Introducción

Listas

Las listas están integradas en el lenguaje Elixir. Se consideran un tipo básico y se denotan con corchetes. Las listas pueden estar vacías o contener cualquier número de elementos de cualquier tipo. Por ejemplo:

empty_list = []
one_item_list = [1]
two_item_list = [1, 2]
multiple_type_list = [1, :pi, 3.14, "four"]

Elixir implementa las listas como una lista enlazada, en la que cada nodo almacena dos valores: el primer elemento y otra lista con todos los elementos restantes. Al primer elemento de la lista se le llama cabeza y a la lista de elementos restantes se le llama cola. Podemos usar esta notación en el código:

# [1] represented in [head | tail] notation
[1 | []]

# [1, 2, 3] represented in [head | tail] notation
[1 | [2 | [3 | []]]]

Podemos usar la notación [head | tail] para anteponer elementos a una lista:

# Suppose
list = [2, 1]

[3, 2, 1] == [3 | list]
# => true

Hay varias funciones en el módulo Kernel para trabajar con listas, así como todo el módulo List.

# Check if 1 is a member of the list
1 in [1, 2, 3, 4]
# => true

Instrucciones

En este ejercicio tienes que implementar algunas funciones para manipular un array de lenguajes de programación.

1. Define una función que devuelva un array de lenguajes vacío

Define la función new/0, que no toma ningún argumento y devuelve un array vacío.

LanguageList.new()
# => []

2. Define una función para añadir un lenguaje al array

Define la función add/2, que toma 2 argumentos (un array de lenguajes y un literal de string de un lenguaje). Debe devolver el array resultante con el nuevo lenguaje antepuesto al array dado.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Clojure")
# => ["Clojure"]
language_list = LanguageList.add(language_list, "Haskell")
# => ["Haskell", "Clojure"]

3. Define una función para eliminar un lenguaje del array

Define la función remove/1, que toma 1 argumento (un array de lenguajes). Debe devolver el array sin el primer elemento. Supón que el array siempre tendrá al menos un elemento.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Clojure")
# => ["Clojure"]
language_list = LanguageList.add(language_list, "Haskell")
# => ["Haskell", "Clojure"]
language_list = LanguageList.remove(language_list)
# => ["Clojure"]

4. Define una función que devuelva el primer elemento del array

Define la función first/1, que toma 1 argumento (un array de lenguajes). Debe devolver el primer lenguaje del array. Supón que el array siempre tendrá al menos un elemento.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elm")
# => ["Elm"]
language_list = LanguageList.add(language_list, "Prolog")
# => ["Prolog", "Elm"]
LanguageList.first(language_list)
# => "Prolog"

5. Define una función que devuelva cuántos lenguajes hay en el array

Define la función count/1, que toma 1 argumento (un array de lenguajes). Debe devolver el número de lenguajes que hay en el array.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elm")
# => ["Elm"]
language_list = LanguageList.add(language_list, "Prolog")
# => ["Prolog", "Elm"]
LanguageList.count(language_list)
# => 2

6. Define una función para determinar si el array incluye un lenguaje funcional

Define la función functional_list?/1, que toma 1 argumento (un array de lenguajes). Debe devolver un valor de tipo Boolean. Debe devolver true si «Elixir» es uno de los lenguajes del array.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elixir")
# => ["Elixir"]
LanguageList.functional_list?(language_list)
# => true
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Elixir Exercism

¿Listo para empezar Lista de lenguajes?

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