مسیرها
/
Haskell
Haskell
/
تمرین‌ها
/
قطره‌های باران
قطره‌های باران

قطره‌های باران

آسان

مقدمه

قطرات باران نسخه‌ی کمی پیچیده‌تر چالش FizzBuzz است، یک پرسش کلاسیک در مصاحبه‌ها.

دستورالعمل‌ها

وظیفه‌ی شما این است که یک عدد را به صداهای قطره‌ی باران متناظر با آن تبدیل کنید.

اگر یک عدد داده‌شده:

  • اگر بر ۳ بخش‌پذیر باشد، «Pling» را به نتیجه اضافه کنید.
  • اگر بر ۵ بخش‌پذیر باشد، «Plang» را به نتیجه اضافه کنید.
  • اگر بر ۷ بخش‌پذیر باشد، «Plong» را به نتیجه اضافه کنید.
  • اگر بر ۳، ۵ یا ۷ بخش‌پذیر نباشد، نتیجه باید خود عدد به‌صورت رشته باشد.

مثال‌ها

  • ۲۸ بر ۷ بخش‌پذیر است، اما بر ۳ یا ۵ نه، بنابراین نتیجه "Plong" خواهد بود.
  • ۳۰ بر ۳ و ۵ بخش‌پذیر است، اما بر ۷ نه، بنابراین نتیجه "PlingPlang" خواهد بود.
  • ۳۴ بر ۳، ۵ یا ۷ بخش‌پذیر نیست، بنابراین نتیجه "34" خواهد بود.
Note

یک روش رایج برای آزمودن این که آیا یک عدد بر عدد دیگری بخش‌پذیر است، مقایسه‌ی «باقیمانده» یا «پیمانه» با صفر است. بیشتر زبان‌ها عملگرها یا توابعی برای یکی (یا هر دوی) این‌ها فراهم می‌کنند.

نکته‌ها

شما باید تابع convert را پیاده‌سازی کنید که عددِ تبدیل‌شده به صدای قطره‌ی باران را برمی‌گرداند. اگر درباره‌ی نوع‌ها مطمئن نیستید، می‌توانید از امضای داده‌شده استفاده کنید، اما نگذارید خلاقیت شما را محدود کند:

convert :: Int -> String

این تمرین با داده‌های متنی کار می‌کند. به دلایل تاریخی، نوع String در Haskell با [Char]، یعنی فهرستی از نویسه‌ها، هم‌معناست. برای پردازش کارآمدتر داده‌های متنی می‌توان از نوع Text استفاده کرد.

به عنوان یک گسترش اختیاری برای این تمرین، می‌توانید

  • درباره‌ی نوع‌های رشته در Haskell بخوانید.
  • - text را به فهرست وابستگی‌های خود در package.yaml اضافه کنید.
  • Data.Text را به روش زیر وارد کنید:
import qualified Data.Text as T
import           Data.Text (Text)
  • حالا می‌توانید مثلاً convert :: Int -> Text بنویسید و به ترکیب‌گرهای Data.Text مثلاً با T.pack ارجاع دهید.
  • مستندات Data.Text را ببینید،
  • سپس می‌توانید همه‌ی موارد String را در Raindrops.hs با Text جایگزین کنید:
convert :: Int -> Text

این بخش کاملاً اختیاری است.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Haskell Exercism

آماده‌اید قطره‌های باران را شروع کنید؟

در Exercism ثبت‌نام کنید تا Haskell را همراه با 107 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.

بررسی عمیق قطره‌های باران!

راه‌حل‌هایی را بررسی کنید که از خطوط لوله‌ی تابعی، ضرب ماتریسی، راه‌حل‌های جدولی پیش‌محاسبه‌شده با یک ماکرو، رویکرد شیءگرا، استفاده‌ی چشمگیر از Python و TCL و یک نسخه‌ی سازمانی بهره می‌برند.