Parcours
/
Roc
Roc
/
Exercices
/
Fréquence des lettres en parallèle
Fréquence des lettres en parallèle

Fréquence des lettres en parallèle

Moyen

Instructions

Compte la fréquence des lettres dans des textes en utilisant le calcul parallèle.

Le parallélisme consiste à faire en parallèle des choses qui peuvent aussi être faites de manière séquentielle. Un exemple courant est le comptage de la fréquence des lettres. Utilise le parallélisme pour calculer la fréquence totale de chaque lettre dans un tableau de textes.

Compter les lettres en parallèle

Compte les lettres, en ignorant la casse et les caractères non alphabétiques, puis renvoie un dictionnaire qui associe chaque lettre minuscule à son nombre d'occurrences. Considère les lettres comme des valeurs scalaires Unicode ; la normalisation Unicode n'est pas nécessaire.

Utilise pf.Parallel.map!(items, { workers, task }) de la plateforme roc-parallel pour traiter les items donnés à l'aide d'une fonction task pure, en parallèle sur plusieurs threads (indiqués par workers). Les résultats sont renvoyés dans l'ordre d'entrée une fois que tous les items ont été traités. Tu n'as besoin de modifier que ParallelLetterFrequency.roc.

Lance les tests

Contrairement à la plupart des autres exercices, cet exercice utilise des fonctions à effets. Exécute les tests avec roc --opt=speed parallel-letter-frequency-test.roc, plutôt qu'avec roc test. Toute erreur renvoyée par le code Roc est signalée par la plateforme, dans un format différent de celui auquel on est habitué.

Tu peux aussi jeter un œil à l'exercice bank-account, qui explore un autre aspect de la concurrence : appliquer des mises à jour à un état partagé en toute sécurité.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Roc Exercism

Prêt à commencer Fréquence des lettres en parallèle ?

Inscris-toi sur Exercism pour apprendre et maîtriser Roc avec 139 exercices, et un vrai mentorat humain, le tout gratuitement.

Analyse approfondie de Fréquence des lettres en parallèle !

On explore les différences entre concurrence et parallélisme, en examinant les différentes approches adoptées par des langages comme JavaScript, Go, Elixir et Rust.