Tracks
/
Gleam
Gleam
/
Ejercicios
/
Ranking del clima
Ranking del clima

Ranking del clima

Ejercicio de aprendizaje

Introducción

Constantes

Las constantes en Gleam son una forma de dar nombres a los valores. Se definen con la palabra clave const.

pub const pi: Float = 3.14159

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

Cuando se definen con la palabra clave pub, se puede acceder a las constantes del módulo desde otros módulos; de lo contrario, solo se puede acceder a ellas desde el módulo en el que se definen.

Órdenes

El módulo gleam/order de la biblioteca estándar de Gleam contiene el tipo Order, que se usa para comparar valores.

La definición de Order se ve así:

pub type Order {
  Gt
  Eq
  Lt
}

El tipo tiene tres variantes, cada una de las cuales se usa para representar la relación entre un valor y otro valor:

  • Gt: el valor es mayor que el otro valor.
  • Eq: el valor es igual al otro valor.
  • Lt: el valor es menor que el otro valor.

Si un tipo de datos se puede comparar por tamaño, es común que el módulo defina una función compare que devuelve un valor Order. Por ejemplo, gleam/float y gleam/int definen funciones compare que operan sobre números de punto flotante y enteros, respectivamente.

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

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

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

Las funciones de ordenamiento como list.sort normalmente reciben una función que devuelve un valor Order, lo que permite que quien llama defina cómo se debe ordenar la lista.

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

Instrucciones

Tori es una periodista climática y quiere escribir un artículo sobre el clima en diferentes ciudades. Tiene datos sobre el clima en diferentes ciudades y quiere clasificarlas según su temperatura, pero algunas de las temperaturas están en Fahrenheit y otras en Celsius. Necesita tu ayuda para convertir las temperaturas a la misma unidad y clasificarlas.

1. Convierte Fahrenheit a Celsius

Define la función fahrenheit_to_celsius que recibe una temperatura en Fahrenheit como argumento y devuelve la temperatura en Celsius.

Para convertir Fahrenheit a Celsius, resta 32 al valor en Fahrenheit y luego divide el resultado entre 1.8.

fahrenheit_to_celsius(72.5)
// -> 22.5

2. Compara dos temperaturas

Define la función compare_temperature que recibe dos temperaturas y devuelve un valor de tipo Order que indica si la primera temperatura es menor que, igual a o mayor que la segunda temperatura.

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

3. Ordena las ciudades por temperatura

Define la función sort_cities_by_temperature que recibe una lista de ciudades y las devuelve de la más fría a la más cálida.

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)))
// ]
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Gleam Exercism

¿Todo listo para empezar Ranking del clima?

Regístrate en Exercism para aprender y dominar Gleam con 33 conceptos122 ejercicios y mentoría humana real, todo gratis.