Parcours
/
Gleam
Gleam
/
Exercices
/
Classement météo
Classement météo

Classement météo

Exercice d'apprentissage

Introduction

Constantes

En Gleam, les constantes permettent de donner un nom à des valeurs. On les définit avec le mot-clé const.

pub const pi: Float = 3.14159

pub fn circle_area(radius: Float) -> Float {
  radius *. radius *. pi
}

Lorsqu'elles sont définies avec le mot-clé pub, les constantes de module sont accessibles depuis d'autres modules ; sinon, elles ne sont accessibles que depuis le module dans lequel elles sont définies.

Ordres

Le module gleam/order de la bibliothèque standard de Gleam contient le type Order, qui sert à comparer des valeurs.

La définition de Order ressemble à ceci :

pub type Order {
  Gt
  Eq
  Lt
}

Ce type prend trois variantes, chacune servant à représenter la relation entre une valeur et une autre valeur :

  • Gt : la valeur est supérieure à l'autre valeur.
  • Eq : la valeur est égale à l'autre valeur.
  • Lt : la valeur est inférieure à l'autre valeur.

Si un type de données peut être comparé par taille, il est courant que le module définisse une fonction compare qui renvoie une valeur Order. Par exemple, gleam/float et gleam/int définissent des fonctions compare qui opèrent respectivement sur les nombres flottants et les entiers.

int.compare(1, 2)
// -> Lt

int.compare(2, 2)
// -> Eq

float.compare(1.0, 2.0)
// -> Lt

Les fonctions de tri, comme list.sort, prennent souvent une fonction qui renvoie une valeur Order, ce qui permet à l'appelant de définir comment la liste doit être triée.

list.sort([3, 7, 3, 1], by: int.compare)
// -> [1, 3, 3, 7]

Instructions

Tori est journaliste spécialisée dans le climat et elle veut écrire un article sur la météo de différentes villes. Elle dispose de données sur la météo de plusieurs villes et souhaite les classer en fonction de leur température, mais certaines températures sont en Fahrenheit et d'autres en Celsius. Elle a besoin de ton aide pour convertir les températures dans la même unité et les classer.

1. Convertis Fahrenheit en Celsius

Définis la fonction fahrenheit_to_celsius qui prend une température en Fahrenheit en argument et renvoie la température en Celsius.

Pour convertir des degrés Fahrenheit en degrés Celsius, soustrais 32 à la valeur en Fahrenheit, puis divise le résultat par 1,8.

fahrenheit_to_celsius(72.5)
// -> 22.5

2. Compare deux températures

Définis la fonction compare_temperature qui prend deux températures et renvoie une valeur de type Order indiquant si la première température est inférieure, égale ou supérieure à la seconde.

compare_temperature(Celsius(30.5), Fahrenheit(82.1))
// -> Gt

3. Trie les villes par température

Définis la fonction sort_cities_by_temperature qui prend une liste de villes et les renvoie de la plus froide à la plus chaude.

sort_cities_by_temperature([
  City(name: "London", temperature: Celsius(30.5)),
  City(name: "Paris", temperature: Fahrenheit(82.1))
])
// -> [
//   City(name: "Paris", temperature: Fahrenheit(82.1)),
//   City(name: "London", temperature: Celsius(30.5)))
// ]
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Gleam Exercism

Prêt à commencer Classement météo ?

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