Trilhas
/
Gleam
Gleam
/
Exercícios
/
Ranking do Clima
Ranking do Clima

Ranking do Clima

Exercício de aprendizagem

Introdução

Constantes

Em Gleam, as constantes são uma forma de dar nomes a valores. Elas são definidas com a palavra-chave const.

pub const pi: Float = 3.14159

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

Quando definidas com a palavra-chave pub, as constantes de módulo podem ser acessadas de outros módulos. Caso contrário, elas só podem ser acessadas de dentro do módulo em que foram definidas.

Ordem

O módulo gleam/order da biblioteca padrão do Gleam contém o tipo Order, usado para comparar valores.

A definição de Order é assim:

pub type Order {
  Gt
  Eq
  Lt
}

O tipo tem três variantes, cada uma usada para representar a relação entre um valor e outro valor:

  • Gt - o valor é maior que o outro valor.
  • Eq - o valor é igual ao outro valor.
  • Lt - o valor é menor que o outro valor.

Se um tipo de dados pode ser comparado por tamanho, é comum que o módulo defina uma função compare que retorna um valor Order. Por exemplo, gleam/float e gleam/int definem funções compare que operam sobre números de ponto flutuante e inteiros, respectivamente.

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

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

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

Funções de ordenação como list.sort geralmente recebem uma função que retorna um valor Order, permitindo que quem faz a chamada defina como a lista deve ser ordenada.

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

Instruções

Tori é uma jornalista especializada em clima e quer escrever um artigo sobre o tempo em diferentes cidades. Ela tem dados sobre o tempo em várias cidades e quer classificá-las com base na temperatura, mas algumas temperaturas estão em Fahrenheit e outras em Celsius. Ela precisa da sua ajuda para converter as temperaturas para a mesma unidade e classificá-las.

1. Converter Fahrenheit em Celsius

Defina a função fahrenheit_to_celsius, que recebe uma temperatura em Fahrenheit como argumento e retorna a temperatura em Celsius.

Para converter Fahrenheit em Celsius, subtraia 32 do valor em Fahrenheit e depois divida o resultado por 1.8.

fahrenheit_to_celsius(72.5)
// -> 22.5

2. Comparar duas temperaturas

Defina a função compare_temperature, que recebe duas temperaturas e retorna um valor Order indicando se a primeira temperatura é menor que, igual a ou maior que a segunda temperatura.

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

3. Ordenar cidades por temperatura

Defina a função sort_cities_by_temperature, que recebe uma lista de cidades e as retorna da mais fria para a mais quente.

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 via GitHub O link abre em uma nova janela ou aba
Gleam Exercism

Tudo pronto para começar Ranking do Clima?

Crie sua conta no Exercism para aprender e dominar Gleam com 33 conceitos122 exercícios e mentoria humana de verdade, tudo de graça.