রেইনড্রপস হলো FizzBuzz চ্যালেঞ্জের কিছুটা বেশি জটিল একটি সংস্করণ, যা একটি ক্লাসিক ইন্টারভিউ প্রশ্ন।
আপনার কাজ হলো একটি সংখ্যাকে তার সংশ্লিষ্ট বৃষ্টির ফোঁটার শব্দে রূপান্তর করা।
যদি কোনো প্রদত্ত সংখ্যা:
"Plong"."PlingPlang"."34".একটি সংখ্যা আরেকটি সংখ্যা দিয়ে নিঃশেষে বিভাজ্য কি না তা পরীক্ষা করার একটি কমন উপায় হলো রিমেইন্ডার বা মডুলাস শূন্যের সাথে তুলনা করা। এসবের একটির (বা দুটিরই) জন্য বেশিরভাগ প্রোগ্রামিং ভাষায় অপারেটর বা ফাংশন থাকে।
আপনাকে convert ফাংশনটি ইমপ্লিমেন্ট করতে হবে, যা সংখ্যাকে বৃষ্টির ফোঁটার শব্দে রূপান্তর করে রিটার্ন করে। টাইপগুলো নিয়ে সংশয় থাকলে প্রদত্ত সিগনেচারটি ব্যবহার করতে পারেন, তবে সেটি যেন আপনার সৃজনশীলতাকে সীমাবদ্ধ না করে:
convert :: Int -> String
এই অনুশীলনীটি টেক্সট ডেটা নিয়ে কাজ করে। ঐতিহাসিক কারণে, Haskell-এর String টাইপ [Char]-এর সমার্থক, যা ক্যারেক্টারগুলোর একটি অ্যারে। টেক্সট ডেটা আরও দক্ষভাবে সামলানোর জন্য Text টাইপটি ব্যবহার করা যায়।
এই অনুশীলনীর একটি ঐচ্ছিক বাড়তি অংশ হিসেবে আপনি করতে পারেন
- text যোগ করুন।Data.Text ইমপোর্ট করুন:import qualified Data.Text as T
import Data.Text (Text)
convert :: Int -> Text লিখতে পারেন এবং Data.Text-এর কম্বিনেটরগুলোকে যেমন T.pack হিসেবে উল্লেখ করতে পারেন।Data.Text-এর ডকুমেন্টেশন দেখে নিন,String-এর সব উপস্থিতি Text দিয়ে প্রতিস্থাপন করতে পারেন:convert :: Int -> Text
এই অংশটি সম্পূর্ণ ঐচ্ছিক।
Exercism-এ সাইন আপ করুন, Haskell ট্র্যাকের 107টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।
কিছু সমাধান ঘুরে দেখুন, যেখানে আছে ফাংশনাল পাইপলাইন, ম্যাট্রিক্স গুণ, ম্যাক্রো দিয়ে তৈরি আগেই হিসাব করে রাখা টেবিল-ভিত্তিক সমাধান, অবজেক্ট ওরিয়েন্টেড পদ্ধতি, Python ও TCL-এর চমকপ্রদ ব্যবহার, আর একটি এন্টারপ্রাইজ সংস্করণ।