트랙
/
Roc
Roc
/
연습 문제
/
병렬 문자 빈도
병렬 문자 빈도

병렬 문자 빈도

보통

지침

병렬 연산을 사용해 텍스트에서 문자의 빈도를 세어요.

병렬성이란 순차적으로도 할 수 있는 일을 병렬로 처리하는 것을 말해요. 흔한 예시가 바로 문자의 빈도를 세는 거예요. 병렬성을 활용해 여러 텍스트로 이루어진 목록에서 각 문자의 전체 빈도를 계산해요.

병렬로 글자 수 세기

대소문자와 글자가 아닌 문자는 무시하고 글자 수를 세고, 소문자를 키로 하고 개수를 값으로 하는 딕셔너리를 반환해요. 글자는 유니코드 스칼라 값으로 취급하고, 유니코드 정규화는 필요하지 않아요.

roc-parallel 플랫폼의 pf.Parallel.map!(items, { workers, task })를 사용하면 순수 함수인 task로 주어진 items를 여러 스레드(workers로 지정)에서 병렬로 처리할 수 있어요. 모든 항목의 처리가 끝나면 결과는 입력 순서대로 반환돼요. ParallelLetterFrequency.roc 파일만 수정하면 돼요.

테스트 실행

다른 대부분의 연습 문제와 달리, 이 연습 문제는 이펙트가 있는 함수를 사용해요. 테스트는 roc test 대신 roc --opt=speed parallel-letter-frequency-test.roc로 실행해요. Roc 코드가 반환한 오류는 플랫폼이 평소와 다른 형식으로 보고해요.

공유 상태에 안전하게 업데이트를 적용하는 방법, 즉 동시성의 또 다른 측면을 다루는 bank-account 연습 문제도 살펴보면 좋아요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Roc Exercism

병렬 문자 빈도 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Roc 트랙을 연습 문제 139개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.

병렬 문자 빈도 깊이 살펴보기!

동시성과 병렬성의 차이를 살펴보고, JavaScript, Go, Elixir, Rust 같은 언어들이 택한 여러 접근법을 함께 봐요.