Parcours
/
Gleam
Gleam
/
Exercices
/
Parcours sur parcours sur parcours
Parcours sur parcours sur parcours

Parcours sur parcours sur parcours

Exercice d'apprentissage

Introduction

Listes

Un tableau en Gleam est une collection immuable de zéro ou plusieurs valeurs. Toutes les valeurs d'un tableau doivent avoir le même type. Comme les tableaux sont immuables, une fois qu'un tableau est construit, sa valeur ne peut plus jamais changer. Toutes les fonctions et tous les opérateurs qui semblent modifier un tableau (comme l'ajout d'un élément) renvoient en réalité un nouveau tableau.

On peut définir un tableau comme ceci :

let empty = []
let singleValue = [5]
let threeValues = ["a", "b", "c"]

La façon la plus courante d'ajouter un élément à un tableau est d'utiliser la syntaxe de propagation :

let two_to_four = [2, 3, 4]
let one_to_four = [1, ..two_to_four]
// -> [1, 2, 3, 4]

Le module gleam/list de la bibliothèque standard de Gleam contient de nombreuses fonctions utiles pour travailler avec les tableaux. Ce module est très couramment utilisé dans le code Gleam, il est donc bon de le connaître.

Les motifs de tableau peuvent être utilisés dans les expressions case pour faire correspondre des tableaux et affecter les valeurs qu'ils contiennent à des variables :

pub fn describe(list: List(String)) -> String {
  case list {
    [] -> "Empty list"
    [x] -> "List with one item: " <> x
    [x, y] -> "List with two items: " <> x <> " and " <> y
    _ -> "List with three or more items"
  }
}

Outre la correspondance sur des tableaux de longueur exacte, la syntaxe de propagation permet de faire correspondre des tableaux d'au moins une certaine longueur :

pub fn describe(list: List(String)) -> String {
  case list {
    [_, _, ..] -> "List with at least two items"
    [_] -> "List with one item"
    [] -> "Empty list"
  }
}

La syntaxe de propagation permet aussi d'affecter le reste du tableau à une variable :

pub fn remove_first_item(list: List(String)) -> List(String) {
  case list {
    // Return the list without the first item
    [_, ..rest] -> rest

    // There's no first item to remove, return an empty list
    _ -> []
  }
}

Les expressions case doivent avoir un motif pour chaque valeur possible du type sur lequel porte la correspondance ; on utilise donc souvent un motif à ignorer (_) à la fin pour gérer les valeurs restantes.

Instructions

Dans cet exercice, tu vas écrire du code pour garder une trace des langages de programmation que tu veux apprendre sur Exercism.

Tu as six tâches, qui consistent toutes à manipuler des tableaux.

1. Crée un nouveau tableau

Pour garder une trace des langages que tu veux apprendre, tu vas devoir créer un nouveau tableau. Définis la fonction new_list qui renvoie un nouveau tableau vide.

new_list()
// -> []

2. Définis un tableau existant

Pour l'instant, tu as une feuille de papier sur laquelle sont inscrits les langages que tu veux apprendre : Gleam, Go et TypeScript. Définis la fonction existing_list pour renvoyer ce tableau.

existing_list()
// -> ["Gleam", "Go", "TypeScript"]

3. Ajoute un nouveau langage à un tableau

Au fur et à mesure que tu explores Exercism et que tu découvres des langages plus intéressants, tu veux les ajouter à ton tableau. Implémente la fonction add_language pour ajouter un nouveau langage au début de ton tableau.

add_language(["OCaml", "Elixir"], "Scheme")
// -> ["Scheme", "OCaml", "Elixir"]

4. Compte les langages du tableau

Compter les langages un par un n'est pas pratique. Implémente la fonction count_languages pour compter le nombre de langages de ton tableau.

count_languages(["jq", "Elm", "Rust", "Kotlin"])
// -> 4

5. Inverse le tableau

À un moment donné, tu réalises que ton tableau est en fait dans l'ordre inverse ! Implémente la fonction reverse_list pour inverser ton tableau.

reverse_list(["Python", "Julia", "Idris", "COBOL"])
// -> ["COBOL", "Idris", "Julia", "Python"]

6. Vérifie si un tableau est intéressant

Même si tu aimes tous les langages, Gleam occupe une place particulière dans ton cœur. Ainsi, un tableau de langages te passionne vraiment si :

  • Le premier élément du tableau est Gleam.
  • Le deuxième élément du tableau est Gleam et le tableau contient deux ou trois langages.

Implémente la fonction exciting_list pour vérifier si un tableau de langages est intéressant :

exciting_list(["Lua", "Gleam"])
// -> True
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Gleam Exercism

Prêt à commencer Parcours sur parcours sur parcours ?

Inscris-toi sur Exercism pour apprendre et maîtriser Gleam avec 33 concepts122 exercices, et un vrai mentorat humain, le tout gratuitement.