Μέτρησε τη συχνότητα των γραμμάτων σε κείμενα χρησιμοποιώντας παράλληλο υπολογισμό.
Ο παραλληλισμός αφορά την εκτέλεση παράλληλα πραγμάτων που μπορούν να γίνουν και σειριακά. Ένα συνηθισμένο παράδειγμα είναι η μέτρηση της συχνότητας των γραμμάτων. Χρησιμοποίησε παραλληλισμό για να υπολογίσεις τη συνολική συχνότητα κάθε γράμματος σε μια λίστα με κείμενα.
Μέτρησε τα γράμματα, αγνοώντας τη διάκριση πεζών-κεφαλαίων καθώς και ό,τι δεν είναι γράμμα, και επέστρεψε ένα λεξικό που αντιστοιχίζει πεζά γράμματα στο πλήθος τους. Αντιμετώπισε τα γράμματα ως βαθμωτές τιμές 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, η οποία εξερευνά μια διαφορετική πλευρά του ταυτοχρονισμού: την ασφαλή εφαρμογή ενημερώσεων σε κοινόχρηστη κατάσταση.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Roc με 139 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.
Εξερευνούμε τις διαφορές ανάμεσα στον ταυτοχρονισμό και τον παραλληλισμό, εξετάζοντας διαφορετικές προσεγγίσεις που ακολουθούν γλώσσες όπως η JavaScript, η Go, η Elixir και η Rust.