Tracks
/
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, denotado por corchetes. Las listas pueden estar vacías o contener cualquier cantidad 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, donde 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 necesitas implementar algunas funciones para manipular una lista de lenguajes de programación.

1. Define una función para devolver una lista de lenguajes vacía

Define la función new/0 que no toma argumentos y devuelve una lista vacía.

LanguageList.new()
# => []

2. Define una función para agregar un lenguaje a la lista

Define la función add/2 que toma 2 argumentos (una lista de lenguajes y un literal de cadena de un lenguaje). Debe devolver la lista resultante con el nuevo lenguaje antepuesto a la lista dada.

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 de la lista

Define la función remove/1 que toma 1 argumento (una lista de lenguajes). Debe devolver la lista sin el primer elemento. Supón que la lista 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 para devolver el primer elemento de la lista

Define la función first/1 que toma 1 argumento (una lista de lenguajes). Debe devolver el primer lenguaje de la lista. Supón que la lista 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 para devolver cuántos lenguajes hay en la lista

Define la función count/1 que toma 1 argumento (una lista de lenguajes). Debe devolver la cantidad de lenguajes en la lista.

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 la lista incluye un lenguaje funcional

Define la función functional_list?/1 que toma 1 argumento (una lista de lenguajes). Debe devolver un valor booleano. Debe devolver true si «Elixir» es uno de los lenguajes de la lista.

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 una pestaña nuevas
Elixir Exercism

¿Todo 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.