قطرات باران نسخهی کمی پیچیدهتر چالش FizzBuzz است، یک پرسش کلاسیک در مصاحبهها.
وظیفهی شما این است که یک عدد را به صداهای قطرهی باران متناظر با آن تبدیل کنید.
اگر یک عدد دادهشده:
"Plong" خواهد بود."PlingPlang" خواهد بود."34" خواهد بود.یک روش رایج برای آزمودن این که آیا یک عدد بر عدد دیگری بخشپذیر است، مقایسهی «باقیمانده» یا «پیمانه» با صفر است. بیشتر زبانها عملگرها یا توابعی برای یکی (یا هر دوی) اینها فراهم میکنند.
شما باید تابع convert را پیادهسازی کنید که عددِ تبدیلشده به صدای قطرهی باران را برمیگرداند. اگر دربارهی نوعها مطمئن نیستید، میتوانید از امضای دادهشده استفاده کنید، اما نگذارید خلاقیت شما را محدود کند:
convert :: Int -> String
این تمرین با دادههای متنی کار میکند. به دلایل تاریخی، نوع String در Haskell با [Char]، یعنی فهرستی از نویسهها، هممعناست. برای پردازش کارآمدتر دادههای متنی میتوان از نوع Text استفاده کرد.
به عنوان یک گسترش اختیاری برای این تمرین، میتوانید
- 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
این بخش کاملاً اختیاری است.
در Exercism ثبتنام کنید تا Haskell را همراه با 107 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.
راهحلهایی را بررسی کنید که از خطوط لولهی تابعی، ضرب ماتریسی، راهحلهای جدولی پیشمحاسبهشده با یک ماکرو، رویکرد شیءگرا، استفادهی چشمگیر از Python و TCL و یک نسخهی سازمانی بهره میبرند.