Trilhas
/
Gleam
Gleam
/
Exercícios
/
Placar de Recordes
Placar de Recordes

Placar de Recordes

Exercício de aprendizagem

Introdução

Aliases de tipo

Aliases de tipo

Um alias de tipo pode ser usado em Gleam para dar um nome conveniente a um tipo existente que de outra forma seria complicado de escrever.

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

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

Quando escrito com pub type, o alias pode ser usado fora do módulo onde foi definido. Se pub for omitido, o alias é privado e não pode ser referenciado em outros módulos.

Dicionários

Os dicionários em Gleam são a estrutura de dados para armazenar informações em pares chave-valor. Em outras linguagens, eles também podem ser conhecidos como arrays associativos, hashes ou dicionários.

Qualquer tipo pode ser usado para as chaves e os valores em um dicionário, e eles não garantem a ordem das suas entradas quando acessadas ou retornadas.

Trabalhando com dicionários

Os dicionários são criados e manipulados usando funções do módulo 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")

Instruções

Neste exercício, você vai implementar uma forma de acompanhar os recordes do jogo mais popular do seu fliperama local.

Você tem 5 funções para implementar, a maioria relacionada a manipular um objeto que guarda recordes.

1. Crie um novo placar de recordes

Crie uma função create_score_board que retorna um dict que serve como placar de recordes. As chaves desse objeto serão os nomes dos jogadores, e os valores, as pontuações deles. Para fins de teste, você quer incluir diretamente uma entrada no objeto. Essa entrada inicial deve ter "The Best Ever" como nome de jogador e 1_000_000 como pontuação.

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

2. Adicione jogadores a um placar de recordes

Para adicionar um jogador ao placar de recordes, defina a função add_player. Ela aceita 3 parâmetros:

  • O primeiro parâmetro é um dict existente de placar de recordes.
  • O segundo parâmetro é o nome de um jogador como string.
  • O terceiro parâmetro é a pontuação como um int.

A função retorna um dict com o novo jogador e a nova pontuação adicionados.

3. Remova jogadores de um placar de recordes

Se os jogadores violarem as regras do fliperama, eles são removidos manualmente do placar de recordes. Defina remove_player, que recebe 2 parâmetros:

  • O primeiro parâmetro é um dict existente de placar de recordes.
  • O segundo parâmetro é o nome do jogador como string.

Essa função deve retornar o dict sem o jogador que foi removido.

Se o jogador não estava no placar, nada deve acontecer com o placar: ele deve ser retornado como está.

4. Aumente a pontuação de um jogador

Se um jogador terminar outro jogo no fliperama, uma certa quantidade de pontos será adicionada à pontuação anterior no placar. Implemente update_score, que recebe 3 parâmetros:

  • O primeiro parâmetro é um dict existente de placar de recordes.
  • O segundo parâmetro é o nome do jogador cuja pontuação deve ser aumentada.
  • O terceiro parâmetro é a pontuação que você deseja adicionar ao recorde armazenado.

A função deve retornar um dict com a pontuação atualizada.

Se o jogador não estava no placar, nada deve acontecer com o placar: ele deve ser retornado como está.

5. Aplique os pontos de bônus de segunda-feira

O fliperama mantém um placar separado às segundas-feiras. No fim do dia, cada jogador nesse placar ganha 100 pontos adicionais.

Implemente a função apply_monday_bonus, que aceita um placar. A função retorna um dict com os pontos de bônus adicionados para cada jogador listado nesse placar.

Editar via GitHub O link abre em uma nova janela ou aba
Gleam Exercism

Tudo pronto para começar Placar de Recordes?

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