Track
/
Roc
Roc
/
Esercizi
/
Frequenza delle lettere in parallelo
Frequenza delle lettere in parallelo

Frequenza delle lettere in parallelo

Medio

Istruzioni

Conta la frequenza delle lettere nei testi usando il calcolo parallelo.

Il parallelismo consiste nel fare in parallelo cose che si possono fare anche in sequenza. Un esempio comune è contare la frequenza delle lettere. Usa il parallelismo per calcolare la frequenza totale di ogni lettera in un elenco di testi.

Contare le lettere in parallelo

Conta le lettere, ignorando maiuscole/minuscole e i caratteri che non sono lettere, e restituisci un dizionario dalle lettere minuscole ai loro conteggi. Considera le lettere come valori scalari Unicode; la normalizzazione Unicode non è necessaria.

Usa pf.Parallel.map!(items, { workers, task }) dalla piattaforma roc-parallel per elaborare gli items forniti con una funzione task pura, in parallelo su più thread (indicati da workers). I risultati vengono restituiti nell'ordine di input una volta che tutti gli elementi sono stati elaborati. Devi solo modificare ParallelLetterFrequency.roc.

Eseguire i test

A differenza della maggior parte degli altri esercizi, questo esercizio usa funzioni con effetti. Esegui i test con roc --opt=speed parallel-letter-frequency-test.roc, anziché con roc test. Qualsiasi errore restituito dal codice Roc viene segnalato dalla piattaforma, con un formato diverso dal solito.

Potresti anche voler dare un'occhiata all'esercizio bank-account, che esplora un altro lato della concorrenza: applicare gli aggiornamenti in modo sicuro a uno stato condiviso.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Roc Exercism

Vuoi iniziare Frequenza delle lettere in parallelo?

Iscriviti a Exercism per imparare e padroneggiare Roc con 139 esercizi e il mentoring di persone reali, tutto gratis.

Approfondimento su Frequenza delle lettere in parallelo!

Esploriamo le differenze tra concorrenza e parallelismo, esaminando i diversi approcci adottati da linguaggi come JavaScript, Go, Elixir e Rust.