Порахуйте частоту літер у текстах за допомогою паралельних обчислень.
Паралелізм полягає в тому, щоб виконувати паралельно те, що також можна виконати послідовно. Поширений приклад - підрахунок частоти літер. Застосуйте паралелізм, щоб обчислити загальну частоту кожної літери в масиві текстів.
Порахуйте літери, ігноруючи регістр і символи, що не є літерами, і поверніть словник, який зіставляє літери в нижньому регістрі з їхньою кількістю. Вважайте літери скалярними значеннями 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.