Rutas
/
Roc
Roc
/
Ejercicios
/
Frecuencia de letras en paralelo
Frecuencia de letras en paralelo

Frecuencia de letras en paralelo

Media

Instrucciones

Cuenta la frecuencia de las letras en textos mediante computación en paralelo.

El paralelismo consiste en hacer en paralelo cosas que también se pueden hacer de forma secuencial. Un ejemplo habitual es contar la frecuencia de letras. Utiliza el paralelismo para calcular la frecuencia total de cada letra en una lista de textos.

Contar letras en paralelo

Cuenta las letras, ignorando mayúsculas y minúsculas y descartando lo que no sean letras, y devuelve un diccionario que asocie cada letra minúscula con su recuento. Trata las letras como valores escalares de Unicode; no hace falta normalización Unicode.

Usa pf.Parallel.map!(items, { workers, task }) de la plataforma roc-parallel para procesar los items dados con una función task pura, en paralelo a través de varios hilos (indicados por workers). Los resultados se devuelven en el orden de entrada una vez procesados todos los elementos. Solo tienes que editar ParallelLetterFrequency.roc.

Ejecutar las pruebas

A diferencia de la mayoría de los demás ejercicios, este ejercicio usa funciones con efectos. Ejecuta las pruebas con roc --opt=speed parallel-letter-frequency-test.roc, en lugar de roc test. Cualquier error que devuelva el código de Roc lo comunica la plataforma, con un formato distinto del habitual.

También puede que quieras echar un vistazo al ejercicio bank-account, que explora otra cara de la concurrencia: aplicar actualizaciones de forma segura a un estado compartido.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Roc Exercism

¿Listo para empezar Frecuencia de letras en paralelo?

Regístrate en Exercism para aprender y dominar Roc con 139 ejercicios y mentoría humana real, todo gratis.

¡Análisis en profundidad de Frecuencia de letras en paralelo!

Exploramos las diferencias entre concurrencia y paralelismo, viendo los distintos enfoques que adoptan lenguajes como JavaScript, Go, Elixir y Rust.