Track
/
Gleam
Gleam
/
Esercizi
/
Tabellone dei punteggi
Tabellone dei punteggi

Tabellone dei punteggi

Esercizio di apprendimento

Introduzione

Alias di tipo

Alias di tipo

In Gleam un alias di tipo può servire a dare un nome comodo a un tipo già esistente che altrimenti sarebbe scomodo da scrivere.

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

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

Quando lo si scrive con pub type, l'alias può essere usato anche fuori dal modulo in cui è definito. Se ometti pub, l'alias è privato e non può essere usato in altri moduli.

I dict

In Gleam i dict sono la struttura dati con cui memorizzare informazioni sotto forma di coppie chiave-valore. In altri linguaggi le trovi anche con i nomi di array associativi, hash o dizionari.

Per le chiavi e i valori di un dict puoi usare qualsiasi tipo, e i dict non garantiscono l'ordine delle voci quando vi si accede o quando vengono restituite.

Lavorare con i dict

I dict si creano e si manipolano con le funzioni del modulo 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")

Istruzioni

In questo esercizio, implementerai un modo per tenere traccia dei punteggi migliori del gioco più popolare della sala giochi della tua zona.

Hai 5 funzioni da implementare, in gran parte legate alla manipolazione di un oggetto che contiene i punteggi migliori.

1. Crea un nuovo tabellone dei punteggi

Crea una funzione create_score_board che restituisce un dict che funge da tabellone dei punteggi. Le chiavi di questo oggetto saranno i nomi dei giocatori, i valori saranno i loro punteggi. A fini del test, devi includere direttamente una voce nell'oggetto. Questa voce iniziale deve contenere "The Best Ever" come nome del giocatore e 1_000_000 come punteggio.

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

2. Aggiungi giocatori a un tabellone dei punteggi

Per aggiungere un giocatore al tabellone dei punteggi, definisci la funzione add_player. Accetta 3 parametri:

  • Il primo parametro è un dict del tabellone dei punteggi esistente.
  • Il secondo parametro è il nome di un giocatore, come stringa.
  • Il terzo parametro è il punteggio, come int.

La funzione restituisce un dict con il nuovo giocatore e il suo punteggio aggiunti.

3. Rimuovi giocatori da un tabellone dei punteggi

Se i giocatori violano le regole della sala giochi, vengono rimossi manualmente dal tabellone dei punteggi. Definisci remove_player, che accetta 2 parametri:

  • Il primo parametro è un dict del tabellone dei punteggi esistente.
  • Il secondo parametro è il nome del giocatore, come stringa.

Questa funzione deve restituire il dict senza il giocatore rimosso.

Se il giocatore non era presente nel tabellone, non deve succedere nulla: il tabellone va restituito così com'è.

4. Aumenta il punteggio di un giocatore

Se un giocatore termina un'altra partita alla sala giochi, una certa quantità di punti verrà aggiunta al punteggio precedente sul tabellone. Implementa update_score, che accetta 3 parametri:

  • Il primo parametro è un dict del tabellone dei punteggi esistente.
  • Il secondo parametro è il nome del giocatore il cui punteggio deve essere aumentato.
  • Il terzo parametro è il punteggio che desideri aggiungere al punteggio memorizzato.

La funzione deve restituire un dict con il punteggio aggiornato.

Se il giocatore non era presente nel tabellone, non deve succedere nulla: il tabellone va restituito così com'è.

5. Applica i punti bonus del lunedì

La sala giochi tiene un tabellone dei punteggi separato il lunedì. Alla fine della giornata, ogni giocatore su quel tabellone riceve 100 punti aggiuntivi.

Implementa la funzione apply_monday_bonus, che accetta un tabellone dei punteggi. La funzione restituisce un dict con i punti bonus aggiunti per ogni giocatore elencato su quel tabellone.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Gleam Exercism

Vuoi iniziare Tabellone dei punteggi?

Iscriviti a Exercism per imparare e padroneggiare Gleam con 33 concetti122 esercizi e il mentoring di persone reali, tutto gratis.