فراوانی حروف را در متنها با استفاده از محاسبات موازی بشمارید.
موازیسازی یعنی کارهایی را بهصورت موازی انجام دهیم که میتوان آنها را بهصورت متوالی هم انجام داد. یک مثال رایج، شمردن فراوانی حروف است.
برای محاسبهی فراوانی کل هر حرف در فهرستی از متنها، از موازیسازی استفاده کنید.
حروف را بشمارید، بدون توجه به بزرگی و کوچکی حروف و نویسههایی که حرف نیستند. سپس یک دیکشنری از حروف کوچک به تعدادشان برگردانید. با حروف مانند مقدارهای اسکالر 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 در پیش میگیرند نگاه میکنیم.