Διαδρομές
/
Roc
Roc
/
Ασκήσεις
/
Παράλληλη συχνότητα γραμμάτων
Παράλληλη συχνότητα γραμμάτων

Παράλληλη συχνότητα γραμμάτων

Μέτριο

Οδηγίες

Μέτρησε τη συχνότητα των γραμμάτων σε κείμενα χρησιμοποιώντας παράλληλο υπολογισμό.

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

Μέτρηση γραμμάτων παράλληλα

Μέτρησε τα γράμματα, αγνοώντας τη διάκριση πεζών-κεφαλαίων καθώς και ό,τι δεν είναι γράμμα, και επέστρεψε ένα λεξικό που αντιστοιχίζει πεζά γράμματα στο πλήθος τους. Αντιμετώπισε τα γράμματα ως βαθμωτές τιμές Unicode· η κανονικοποίηση Unicode δεν απαιτείται.

Χρησιμοποίησε το pf.Parallel.map!(items, { workers, task }) από την πλατφόρμα roc-parallel για να επεξεργαστείς τα items που σου δίνονται με μια καθαρή συνάρτηση task, παράλληλα σε πολλαπλά νήματα (που δίνονται από το workers). Τα αποτελέσματα επιστρέφονται με τη σειρά εισόδου, μόλις επεξεργαστούν όλα τα στοιχεία. Το μόνο που χρειάζεται να επεξεργαστείς είναι το ParallelLetterFrequency.roc.

Εκτέλεση των τεστ

Σε αντίθεση με τις περισσότερες άλλες ασκήσεις, αυτή η άσκηση χρησιμοποιεί συναρτήσεις με παρενέργειες. Εκτέλεσε τα τεστ με roc --opt=speed parallel-letter-frequency-test.roc, αντί για roc test. Οποιοδήποτε σφάλμα επιστρέφει ο κώδικας της Roc αναφέρεται από την πλατφόρμα, με διαφορετική μορφή από τη συνηθισμένη.

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

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

Έτοιμος να ξεκινήσεις την άσκηση Παράλληλη συχνότητα γραμμάτων;

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

Αναλυτική ματιά στο Παράλληλη συχνότητα γραμμάτων!

Εξερευνούμε τις διαφορές ανάμεσα στον ταυτοχρονισμό και τον παραλληλισμό, εξετάζοντας διαφορετικές προσεγγίσεις που ακολουθούν γλώσσες όπως η JavaScript, η Go, η Elixir και η Rust.