Διαδρομές
/
Gleam
Gleam
/
Ασκήσεις
/
Πίνακας υψηλών βαθμολογιών
Πίνακας υψηλών βαθμολογιών

Πίνακας υψηλών βαθμολογιών

Άσκηση εκμάθησης

Εισαγωγή

Ψευδώνυμα τύπων

Ψευδώνυμα τύπων

Ένα ψευδώνυμο τύπου μπορεί να χρησιμοποιηθεί στη Gleam για να δώσει ένα βολικό όνομα σε έναν υπάρχοντα τύπο που διαφορετικά θα ήταν δύσκολο να γραφτεί.

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

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

Όταν γράφεται με pub type, το ψευδώνυμο μπορεί να χρησιμοποιηθεί εκτός του αρθρώματος στο οποίο ορίζεται. Αν παραλειφθεί το pub, τότε το ψευδώνυμο είναι ιδιωτικό και δεν μπορεί να γίνει αναφορά σε αυτό από άλλα αρθρώματα.

Λεξικά

Τα λεξικά στη Gleam είναι η δομή δεδομένων για την αποθήκευση πληροφοριών σε ζεύγη κλειδιού-τιμής. Σε άλλες γλώσσες, αυτά μπορεί επίσης να είναι γνωστά ως συνειρμικοί πίνακες, κατακερματισμοί ή λεξικά.

Οποιοσδήποτε τύπος μπορεί να χρησιμοποιηθεί για τα κλειδιά και τις τιμές σε ένα λεξικό, και δεν εγγυώνται τη σειρά των καταχωρήσεών τους όταν προσπελαύνονται ή επιστρέφονται.

Εργασία με λεξικά

Τα λεξικά δημιουργούνται και χειρίζονται χρησιμοποιώντας συναρτήσεις από το άρθρωμα 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")

Οδηγίες

Σε αυτή την άσκηση, υλοποιείς έναν τρόπο να παρακολουθείς τα υψηλά σκορ για το πιο δημοφιλές παιχνίδι στην τοπική σου αίθουσα παιχνιδιών.

Έχεις 5 συναρτήσεις να υλοποιήσεις, που σχετίζονται κυρίως με τον χειρισμό ενός αντικειμένου που περιέχει υψηλά σκορ.

1. Δημιούργησε έναν νέο πίνακα υψηλών σκορ

Δημιούργησε μια συνάρτηση create_score_board που επιστρέφει ένα dict που χρησιμεύει ως πίνακας υψηλών σκορ. Τα κλειδιά αυτού του αντικειμένου θα είναι τα ονόματα των παικτών, οι τιμές θα είναι τα σκορ τους. Για τις ανάγκες των τεστ, θέλεις να συμπεριλάβεις απευθείας μία καταχώριση στο αντικείμενο. Αυτή η αρχική καταχώριση θα πρέπει να αποτελείται από το "The Best Ever" ως όνομα παίκτη και το 1_000_000 ως σκορ.

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

2. Πρόσθεσε παίκτες σε έναν πίνακα σκορ

Για να προσθέσεις έναν παίκτη στον πίνακα υψηλών σκορ, όρισε τη συνάρτηση add_player. Δέχεται 3 παραμέτρους:

  • Η πρώτη παράμετρος είναι ένα υπάρχον dict που αναπαριστά τον πίνακα σκορ.
  • Η δεύτερη παράμετρος είναι το όνομα του παίκτη ως συμβολοσειρά.
  • Η τρίτη παράμετρος είναι το σκορ ως int.

Η συνάρτηση επιστρέφει ένα dict στο οποίο έχουν προστεθεί ο νέος παίκτης και το σκορ.

3. Αφαίρεσε παίκτες από έναν πίνακα σκορ

Αν οι παίκτες παραβιάσουν τους κανόνες της αίθουσας παιχνιδιών, αφαιρούνται χειροκίνητα από τον πίνακα υψηλών σκορ. Όρισε τη συνάρτηση remove_player που παίρνει 2 παραμέτρους:

  • Η πρώτη παράμετρος είναι ένα υπάρχον dict που αναπαριστά τον πίνακα σκορ.
  • Η δεύτερη παράμετρος είναι το όνομα του παίκτη ως συμβολοσειρά.

Αυτή η συνάρτηση θα πρέπει να επιστρέφει το dict χωρίς τον παίκτη που αφαιρέθηκε.

Αν ο παίκτης δεν ήταν εξαρχής στον πίνακα, δεν θα πρέπει να αλλάξει τίποτα στον πίνακα, θα πρέπει να επιστραφεί ως έχει.

4. Αύξησε το σκορ ενός παίκτη

Αν ένας παίκτης τελειώσει άλλο ένα παιχνίδι στην αίθουσα παιχνιδιών, ένα συγκεκριμένο ποσό πόντων θα προστεθεί στο προηγούμενο σκορ του πίνακα. Υλοποίησε τη συνάρτηση update_score, που παίρνει 3 παραμέτρους:

  • Η πρώτη παράμετρος είναι ένα υπάρχον dict που αναπαριστά τον πίνακα σκορ.
  • Η δεύτερη παράμετρος είναι το όνομα του παίκτη του οποίου το σκορ θα πρέπει να αυξηθεί.
  • Η τρίτη παράμετρος είναι το σκορ που θέλεις να προσθέσεις στο αποθηκευμένο υψηλό σκορ.

Η συνάρτηση θα πρέπει να επιστρέφει ένα dict με το ενημερωμένο σκορ.

Αν ο παίκτης δεν ήταν εξαρχής στον πίνακα, δεν θα πρέπει να αλλάξει τίποτα στον πίνακα, θα πρέπει να επιστραφεί ως έχει.

5. Εφάρμοσε τους πόντους μπόνους της Δευτέρας

Η αίθουσα παιχνιδιών κρατά έναν ξεχωριστό πίνακα σκορ τις Δευτέρες. Στο τέλος της ημέρας, κάθε παίκτης σε αυτόν τον πίνακα παίρνει 100 επιπλέον πόντους.

Υλοποίησε τη συνάρτηση apply_monday_bonus που δέχεται έναν πίνακα σκορ. Η συνάρτηση επιστρέφει ένα dict με τους πόντους μπόνους προστιθέμενους για κάθε παίκτη που αναγράφεται σε αυτόν τον πίνακα.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Gleam Exercism

Έτοιμος να ξεκινήσεις την άσκηση Πίνακας υψηλών βαθμολογιών;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Gleam με 33 έννοιες122 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.