Διαδρομές
/
Rust
Rust
/
Ασκήσεις
/
Αποκόμματα περιοδικού
Αποκόμματα περιοδικού

Αποκόμματα περιοδικού

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

Εισαγωγή

Το entry API της Rust παρέχει μια προβολή σε μία μεμονωμένη καταχώριση σε έναν χάρτη, ο οποίος μπορεί να είναι είτε HashMap είτε BTreeMap. Η καταχώριση μπορεί να είναι είτε κατειλημμένη είτε κενή, και το API παρέχει μεθόδους για την τροποποίηση των περιεχομένων της καταχώρισης.

Οδηγίες

Σε αυτή την άσκηση θα χρησιμοποιήσεις ένα HashMap, μαζί με μεθόδους του entry API, για να λύσεις ένα απλό πρόβλημα αλγορίθμου.

Δεδομένου ενός &[&str] που αντιπροσωπεύει τις λέξεις ενός άρθρου περιοδικού, και ενός &[&str] που αντιπροσωπεύει τις λέξεις ενός σημειώματος που θέλεις να στείλεις, μπορείς να συνθέσεις το σημείωμά σου κόβοντας λέξεις από το περιοδικό και κολλώντας τις σε ένα γράμμα;

Σημειώσεις:

  • Αυτό προϋποθέτει πραγματικό κόψιμο και κόλλημα, και το περιοδικό πρέπει να περιέχει τουλάχιστον τόσα αντίτυπα από κάθε λέξη όσα χρειάζεται το σημείωμα.
  • Τα κεφαλαία γράμματα έχουν σημασία, και το γεγονός ότι κολλάς ένα σημείωμα φτιαγμένο από λέξεις ενός περιοδικού δεν σημαίνει ότι δέχεσαι να κάνεις γραμματικά λάθη.

Θα ξεκινήσεις με την παρακάτω υπογραφή συνάρτησης, η οποία είναι μόνο σκελετός:

pub fn can_construct_note(magazine: &[&str], note: &[&str]) -> bool {
    todo!()
}

Δεδομένης της παρακάτω εισόδου

let magazine = "two times three is not four".split_whitespace().collect::<Vec<&str>>();
let note = "two times two is four".split_whitespace().collect::<Vec<&str>>();
assert!(!can_construct_note(&magazine, &note));

Η συνάρτηση επιστρέφει false, αφού το περιοδικό περιέχει μόνο ένα στιγμιότυπο του "two" ενώ το σημείωμα χρειάζεται δύο από αυτά.

Η παρακάτω είσοδος θα πετύχει:

let magazine = "Astronomer Amy Mainzer spent hours chatting with Leonardo DiCaprio for Netflix's 'Don't Look Up'".split_whitespace().collect::<Vec<&str>>();
let note = "Amy Mainzer chatting with Leonardo DiCaprio"
    .split_whitespace()
    .collect::<Vec<&str>>();
assert!(can_construct_note(&magazine, &note));

Η συνάρτηση επιστρέφει true, αφού το περιοδικό περιέχει όλες τις λέξεις που χρειάζεται το σημείωμα.

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

Έτοιμος να ξεκινήσεις την άσκηση Αποκόμματα περιοδικού;

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