Parcours
/
Gleam
Gleam
/
Exercices
/
Tableau des meilleurs scores
Tableau des meilleurs scores

Tableau des meilleurs scores

Exercice d'apprentissage

Introduction

Alias de type

Alias de type

En Gleam, un alias de type permet de donner un nom pratique à un type existant qui serait autrement pénible à écrire.

pub type Headers =
  List(#(String, String))

pub fn html_headers() -> Headers {
  [
    #("content-type", "text/html"),
    #("x-frame-options", "DENY"),
  ]
}

Lorsqu'il est écrit avec pub type, l'alias peut être utilisé en dehors du module dans lequel il est défini. Si l'on omet pub, l'alias est privé et ne peut pas être référencé dans d'autres modules.

Dictionnaires

Les dictionnaires en Gleam sont la structure de données qui permet de stocker des informations sous forme de paires clé-valeur. Dans d'autres langages, on les connaît aussi sous le nom de tableaux associatifs, de tables de hachage ou de dictionnaires.

N'importe quel type peut être utilisé pour les clés et les valeurs d'un dictionnaire, et les dictionnaires ne garantissent pas l'ordre de leurs entrées lorsqu'on y accède ou qu'on les renvoie.

Manipule les dictionnaires

Les dictionnaires se créent et se manipulent à l'aide des fonctions du module gleam/dict.

// Create an empty dict
let dict1 = dict.new()

// Create a dict with some values
let dict2 = dict.from_list([
  #("name", "Gleam"),
  #("colour", "Pink"),
])

// Add a value to a dict
let dict3 = dict.insert(dict2, "website", "https://gleam.run")

// Get a value from a dict
let name = dict.get(dict3, "name")
// -> Ok("Gleam")

Instructions

Dans cet exercice, tu vas implémenter un moyen de suivre les meilleurs scores du jeu le plus populaire de la salle d'arcade de ton quartier.

Tu as 5 fonctions à implémenter, qui servent principalement à manipuler un objet qui contient les meilleurs scores.

1. Crée un nouveau tableau des meilleurs scores

Crée une fonction create_score_board qui renvoie un dictionnaire qui sert de tableau des meilleurs scores. Les clés de cet objet seront les noms des joueurs, et les valeurs seront leurs scores. Pour les tests, tu dois inclure directement une entrée dans l'objet. Cette entrée initiale doit contenir "The Best Ever" comme nom de joueur et 1_000_000 comme score.

create_score_board()
// returns an object with one initial entry

2. Ajoute des joueurs à un tableau des meilleurs scores

Pour ajouter un joueur au tableau des meilleurs scores, définis la fonction add_player. Elle prend 3 paramètres :

  • Le premier paramètre est un dictionnaire existant qui représente le tableau des meilleurs scores.
  • Le deuxième paramètre est le nom d'un joueur, sous forme de string.
  • Le troisième paramètre est le score, sous forme d'entier.

La fonction renvoie un dictionnaire avec le nouveau joueur et son score ajoutés.

3. Retire des joueurs d'un tableau des meilleurs scores

Si des joueurs enfreignent les règles de la salle d'arcade, ils sont retirés manuellement du tableau des meilleurs scores. Définis remove_player, qui prend 2 paramètres :

  • Le premier paramètre est un dictionnaire existant qui représente le tableau des meilleurs scores.
  • Le deuxième paramètre est le nom du joueur, sous forme de string.

Cette fonction doit renvoyer le dictionnaire sans le joueur qui a été retiré.

Si le joueur n'était pas déjà sur le tableau, rien ne doit changer et le tableau doit être renvoyé tel quel.

4. Augmente le score d'un joueur

Si un joueur termine une autre partie dans la salle d'arcade, un certain nombre de points sera ajouté au score précédent du tableau. Implémente update_score, qui prend 3 paramètres :

  • Le premier paramètre est un dictionnaire existant qui représente le tableau des meilleurs scores.
  • Le deuxième paramètre est le nom du joueur dont le score doit être augmenté.
  • Le troisième paramètre est le score que tu souhaites ajouter au meilleur score enregistré.

La fonction doit renvoyer un dictionnaire avec le score mis à jour.

Si le joueur n'était pas déjà sur le tableau, rien ne doit changer et le tableau doit être renvoyé tel quel.

5. Applique les points bonus du lundi

La salle d'arcade tient un tableau des meilleurs scores distinct le lundi. À la fin de la journée, chaque joueur de ce tableau reçoit 100 points supplémentaires.

Implémente la fonction apply_monday_bonus, qui prend un tableau des meilleurs scores. La fonction renvoie un dictionnaire avec les points bonus ajoutés pour chaque joueur inscrit sur ce tableau.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Gleam Exercism

Prêt à commencer Tableau des meilleurs scores ?

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