Parcours
/
Elixir
Elixir
/
Exercices
/
Liste de langages
Liste de langages

Liste de langages

Exercice d'apprentissage

Introduction

Listes

Les listes font partie intégrante du langage Elixir. Elles sont considérées comme un type de base, noté à l'aide de crochets. Une liste peut être vide ou contenir un nombre quelconque d'éléments de n'importe quel type. Par exemple :

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

Elixir implémente les listes sous forme de liste chaînée, où chaque nœud stocke deux valeurs : le premier élément et une autre liste contenant tous les éléments restants. Le premier élément de la liste est appelé la tête et la liste des éléments restants est appelée la queue. On peut utiliser cette notation dans le code :

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

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

On peut utiliser la notation [head | tail] pour ajouter des éléments au début d'une liste :

# Suppose
list = [2, 1]

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

Le module Kernel contient plusieurs fonctions pour manipuler les listes, ainsi que tout le module List.

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

Instructions

Dans cet exercice, tu dois implémenter quelques fonctions pour manipuler une liste de langages de programmation.

1. Définis une fonction qui renvoie une liste de langages vide

Définis la fonction new/0, qui ne prend aucun argument et renvoie une liste vide.

LanguageList.new()
# => []

2. Définis une fonction qui ajoute un langage à la liste

Définis la fonction add/2, qui prend 2 arguments (une liste de langages et un littéral de type string représentant un langage). Elle doit renvoyer la liste résultante, avec le nouveau langage ajouté au début de la liste donnée.

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

3. Définis une fonction qui retire un langage de la liste

Définis la fonction remove/1, qui prend 1 argument (une liste de langages). Elle doit renvoyer la liste sans son premier élément. On considère que la liste contient toujours au moins un élément.

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. Définis une fonction qui renvoie le premier élément de la liste

Définis la fonction first/1, qui prend 1 argument (une liste de langages). Elle doit renvoyer le premier langage de la liste. On considère que la liste contient toujours au moins un élément.

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. Définis une fonction qui renvoie le nombre de langages de la liste

Définis la fonction count/1, qui prend 1 argument (une liste de langages). Elle doit renvoyer le nombre de langages présents dans la liste.

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. Définis une fonction qui détermine si la liste contient un langage fonctionnel

Définis la fonction functional_list?/1, qui prend 1 argument (une liste de langages). Elle doit renvoyer une valeur booléenne. Elle doit renvoyer vrai si « Elixir » fait partie des langages de la liste.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elixir")
# => ["Elixir"]
LanguageList.functional_list?(language_list)
# => true
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Elixir Exercism

Prêt à commencer Liste de langages ?

Inscris-toi sur Exercism pour apprendre et maîtriser Elixir avec 58 concepts168 exercices, et un vrai mentorat humain, le tout gratuitement.