অ্যালার্জি

অ্যালার্জি

মধ্যম

নির্দেশনা

কোনো ব্যক্তির অ্যালার্জি স্কোর দেওয়া থাকলে, নির্দিষ্ট কোনো আইটেমে তার অ্যালার্জি আছে কি না এবং তার সম্পূর্ণ অ্যালার্জির তালিকা নির্ধারণ করুন।

একটি অ্যালার্জি পরীক্ষা একটি একক সংখ্যাগত স্কোর তৈরি করে, যেটিতে পরীক্ষা করা ওই ব্যক্তির সব অ্যালার্জির তথ্য থাকে।

যে আইটেমগুলো (এবং তাদের মান) পরীক্ষা করা হয়েছিল সেগুলো হলো:

  • eggs (1)
  • peanuts (2)
  • shellfish (4)
  • strawberries (8)
  • tomatoes (16)
  • chocolate (32)
  • pollen (64)
  • cats (128)

তাই Tom-এর যদি peanuts আর chocolate-এ অ্যালার্জি থাকে, তবে সে 34 স্কোর পায়।

এখন কেবল সেই 34 স্কোরটি দেওয়া থাকলে, আপনার প্রোগ্রামের এটি বলতে পারা উচিত:

  • উপরে তালিকাভুক্ত অ্যালার্জেনগুলোর যেকোনো একটিতে Tom-এর অ্যালার্জি আছে কি না।
  • Tom যে সব অ্যালার্জেনে অ্যালার্জিক, সেই সব অ্যালার্জেন।

দ্রষ্টব্য: একটি নির্দিষ্ট স্কোরে উপরে তালিকাভুক্ত না থাকা অ্যালার্জেনও থাকতে পারে (অর্থাৎ যেসব অ্যালার্জেনের স্কোর 256, 512, 1024 ইত্যাদি)। আপনার প্রোগ্রামের স্কোরের সেই অংশগুলো উপেক্ষা করা উচিত। যেমন, অ্যালার্জি স্কোর 257 হলে, আপনার প্রোগ্রামের কেবল eggs (1) অ্যালার্জিটির কথা জানানো উচিত।

ইঙ্গিত

এই অনুশীলনীটি সম্পূর্ণ করতে আপনাকে Allergen নামের একটি ডেটা টাইপ তৈরি করতে হবে, যার Eq ও Show ইনস্ট্যান্স থাকবে, এবং নিচের ফাংশনগুলি ইমপ্লিমেন্ট করতে হবে:

  • allergies
  • isAllergicTo

একটি ডামি ডেটা ডিক্লারেশন আর টাইপ সিগনেচার আগে থেকেই দেওয়া আছে, কিন্তু ফাংশনগুলি ডিফাইন করা এবং একটি অর্থবহ ডেটা টাইপ, newtype বা টাইপ সিনোনিম তৈরি করা আপনার দায়িত্ব।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Haskell Exercism

অ্যালার্জি শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Haskell ট্র্যাকের 107টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।

ডিপ ডাইভ: অ্যালার্জি!

আমরা বিট শিফটিং, বিটওয়াইজ তুলনা আর বাইনারি সংখ্যার অন্যান্য ধারণা ঘুরে দেখি! প্যাটার্ন ম্যাচিং ব্যবহার করা একটি সমাধানও দেখি, আর Erlang-এ রিকার্শন দিয়ে করা একটি মজার পদ্ধতিও।