Διαδρομές
/
Gleam
Gleam
/
Ασκήσεις
/
Κατάταξη καιρού
Κατάταξη καιρού

Κατάταξη καιρού

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

Εισαγωγή

Σταθερές

Οι σταθερές στη Gleam είναι ένας τρόπος να δίνεις ονόματα σε τιμές. Ορίζονται με τη λέξη-κλειδί const.

pub const pi: Float = 3.14159

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

Όταν ορίζονται με τη λέξη-κλειδί pub, οι σταθερές μιας ενότητας είναι προσβάσιμες από άλλες ενότητες, διαφορετικά είναι προσβάσιμες μόνο μέσα από την ενότητα στην οποία ορίζονται.

Διατάξεις

Η ενότητα gleam/order στην πρότυπη βιβλιοθήκη της Gleam περιέχει τον τύπο Order, ο οποίος χρησιμοποιείται για τη σύγκριση τιμών.

Ο ορισμός του Order έχει ως εξής:

pub type Order {
  Gt
  Eq
  Lt
}

Ο τύπος έχει τρεις παραλλαγές, καθεμία από τις οποίες χρησιμοποιείται για να αναπαραστήσει τη σχέση ανάμεσα σε μια τιμή και μια άλλη τιμή:

  • Gt - η τιμή είναι μεγαλύτερη από την άλλη τιμή.
  • Eq - η τιμή είναι ίση με την άλλη τιμή.
  • Lt - η τιμή είναι μικρότερη από την άλλη τιμή.

Αν ένας τύπος δεδομένων μπορεί να συγκριθεί ως προς το μέγεθος, συνηθίζεται η ενότητα να ορίζει μια συνάρτηση compare που επιστρέφει μια τιμή Order. Για παράδειγμα, οι ενότητες gleam/float και gleam/int ορίζουν συναρτήσεις compare που λειτουργούν σε float και int αντίστοιχα.

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

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

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

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

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

Οδηγίες

Η Tori είναι δημοσιογράφος που γράφει για το κλίμα και θέλει να γράψει ένα άρθρο για τον καιρό σε διάφορες πόλεις. Έχει δεδομένα για τον καιρό σε διάφορες πόλεις και θέλει να τις κατατάξει με βάση τη θερμοκρασία τους, αλλά κάποιες θερμοκρασίες είναι σε Φαρενάιτ και κάποιες σε Κελσίου. Χρειάζεται τη βοήθειά σου για να μετατρέψεις τις θερμοκρασίες στην ίδια μονάδα και να τις κατατάξεις.

1. Μετατροπή από Φαρενάιτ σε Κελσίου

Όρισε τη συνάρτηση fahrenheit_to_celsius που παίρνει ως όρισμα μια θερμοκρασία σε Φαρενάιτ και επιστρέφει τη θερμοκρασία σε Κελσίου.

Για να μετατρέψεις από Φαρενάιτ σε Κελσίου, αφαίρεσε 32 από την τιμή σε Φαρενάιτ και μετά διαίρεσε το αποτέλεσμα με το 1,8.

fahrenheit_to_celsius(72.5)
// -> 22.5

2. Σύγκριση δύο θερμοκρασιών

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

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

3. Ταξινόμηση πόλεων με βάση τη θερμοκρασία

Όρισε τη συνάρτηση sort_cities_by_temperature που παίρνει μια λίστα με πόλεις και τις επιστρέφει από την πιο κρύα στην πιο ζεστή.

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)))
// ]
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Gleam Exercism

Έτοιμος να ξεκινήσεις την άσκηση Κατάταξη καιρού;

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