ট্র্যাক
/
Elm
Elm
/
অনুশীলনী
/
অ্যানালিনের অনুপ্রবেশ
অ্যানালিনের অনুপ্রবেশ

অ্যানালিনের অনুপ্রবেশ

লার্নিং অনুশীলনী

ভূমিকা

বুলিয়ান

Bool টাইপটি ভাষার মূল ভিত্তিগুলোর একটি। এটি বর্ণনা করে কোনো কিছু সত্য না মিথ্যা, যার জন্য যথাক্রমে True ও False মান ব্যবহৃত হয়।

&& "AND" আর || "OR" অপারেটর দিয়ে বুলিয়ান মানগুলো জোড়া লাগানো যায়, আর not ফাংশন দিয়ে উল্টে দেওয়া যায়।

কোডে এমন শাখা তৈরি করতেও বুলিয়ান দারুণ কাজে লাগে, যা কেবল নির্দিষ্ট কিছু শর্ত পূরণ হলেই চালানো হয়। Elm-এ এটি করা হয় একটি if-then-else এক্সপ্রেশন দিয়ে, যা এভাবে ব্যবহার করা হয়।

if someCondition || (someOtherCondition && anotherCondition) then
    doSomething
else
    doSomethingElse

নির্দেশনা

এই অনুশীলনীতে আপনি একটি নতুন RPG গেমের কোয়েস্ট লজিক ইমপ্লিমেন্ট করবেন, যেটি আপনার এক বন্ধু তৈরি করছে। গেমের মূল চরিত্র আনালিন, একজন সাহসী মেয়ে, যার একটি হিংস্র ও বিশ্বস্ত পোষা কুকুর আছে। দুঃখজনকভাবে বিপর্যয় নেমে আসে, কারণ তার সেরা বন্ধু বনে বেরি খুঁজতে গিয়ে অপহৃত হয়। আনালিন তার সেরা বন্ধুকে খুঁজে বের করে মুক্ত করার চেষ্টা করবে, এবং চাইলে এই কোয়েস্টে তার কুকুরটিকেও সঙ্গে নেবে।

সেরা বন্ধুর পথের চিহ্ন ধরে কিছু সময় এগোনোর পর সে সেই শিবির খুঁজে পায়, যেখানে তার সেরা বন্ধু বন্দী। দেখা যায় অপহরণকারী দুজন: একজন শক্তিশালী নাইট আর একজন ধূর্ত আর্চার।

অপহরণকারীদের খুঁজে পেয়ে আনালিন ভেবে দেখে, নিচের কোন কোন কাজ সে করতে পারে:

  • দ্রুত আক্রমণ: নাইট ঘুমিয়ে থাকলে দ্রুত আক্রমণ করা যায়, কারণ তার বর্ম পরতে সময় লাগে, তাই সে অরক্ষিত থাকে।
  • চুপিসারে আক্রমণ: আনালিন যদি ধরা না পড়ে ঘুমন্ত নাইটের কাছে পৌঁছাতে পারে, তবে চুপিসারে আক্রমণ করে সে ১২ ড্যামেজ দেয়। নাহলে সে নাইটকে মাত্র ৭ ড্যামেজ দেয়।
  • গুপ্তচরবৃত্তি: দলের অন্তত একজন জেগে থাকলে দলের উপর গুপ্তচরবৃত্তি করা যায়। নাহলে গুপ্তচরবৃত্তি করা সময়ের অপচয়।
  • বন্দীকে সংকেত পাঠানো: বন্দী জেগে থাকলে এবং আর্চার ঘুমিয়ে থাকলে পাখির ডাক দিয়ে বন্দীকে সংকেত পাঠানো যায়, কারণ আর্চাররা পাখির ডাকে সংকেত পাঠানোর প্রশিক্ষণ পায়, তাই তারা বার্তাটি আটকে দিতে পারে।
  • বন্দীকে মুক্ত করা: বন্দীকে মুক্ত করতে আনালিন চুপিসারে শিবিরে ঢোকার চেষ্টা করতে পারে। এটি একটি ঝুঁকিপূর্ণ কাজ এবং কেবল দুটি উপায়ের একটিতে সফল হতে পারে:
    • আনালিনের সঙ্গে তার পোষা কুকুর থাকলে আর্চার ঘুমিয়ে থাকলে সে বন্দীকে উদ্ধার করতে পারে। নাইট কুকুরটিকে ভয় পায়, আর আনালিন ও বন্দী পালিয়ে যাওয়ার আগে আর্চারের তৈরি হওয়ার সময় থাকবে না।
    • আনালিনের সঙ্গে কুকুর না থাকলে তাকে ও বন্দীকে খুব চুপিসারে চলতে হবে! বন্দী জেগে থাকলে এবং নাইট ও আর্চার দুজনেই ঘুমিয়ে থাকলে আনালিন বন্দীকে মুক্ত করতে পারে, কিন্তু বন্দী ঘুমিয়ে থাকলে তাকে উদ্ধার করা যায় না: আনালিনের হঠাৎ আবির্ভাব দেখে বন্দী চমকে উঠবে এবং নাইট ও আর্চারকে জাগিয়ে ফেলবে।

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

1. দ্রুত আক্রমণ করা যায় কি না তা পরীক্ষা করুন

canFastAttack ফাংশনটি ইমপ্লিমেন্ট করুন, যা একটি বুলিয়ান মান নেয় এবং তা দিয়ে বোঝা যায় নাইট জেগে আছে কি না। নাইটের অবস্থার ভিত্তিতে দ্রুত আক্রমণ করা গেলে এই ফাংশনটি True রিটার্ন করে। নাহলে False রিটার্ন করে:

knightIsAwake = True

canFastAttack knightIsAwake
    --> False

2. দলের উপর গুপ্তচরবৃত্তি করা যায় কি না তা পরীক্ষা করুন

canSpy ফাংশনটি ইমপ্লিমেন্ট করুন, যা তিনটি বুলিয়ান মান নেয় এবং তা দিয়ে যথাক্রমে নাইট, আর্চার ও বন্দী জেগে আছে কি না তা বোঝা যায়। তিন চরিত্রের অবস্থার ভিত্তিতে দলের উপর গুপ্তচরবৃত্তি করা গেলে ফাংশনটি True রিটার্ন করে। নাহলে False রিটার্ন করে:

knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False

canSpy knightIsAwake archerIsAwake prisonerIsAwake
    --> True

3. বন্দীকে সংকেত পাঠানো যায় কি না তা পরীক্ষা করুন

canSignalPrisoner ফাংশনটি ইমপ্লিমেন্ট করুন, যা দুটি বুলিয়ান মান নেয় এবং তা দিয়ে যথাক্রমে আর্চার ও বন্দী জেগে আছে কি না তা বোঝা যায়। দুই চরিত্রের অবস্থার ভিত্তিতে বন্দীকে সংকেত পাঠানো গেলে ফাংশনটি True রিটার্ন করে। নাহলে False রিটার্ন করে:

archerIsAwake = False
prisonerIsAwake = True

canSignalPrisoner archerIsAwake prisonerIsAwake
    --> True

4. বন্দীকে মুক্ত করা যায় কি না তা পরীক্ষা করুন

canFreePrisoner ফাংশনটি ইমপ্লিমেন্ট করুন, যা চারটি বুলিয়ান মান নেয়। প্রথম তিনটি প্যারামিটার দিয়ে বোঝা যায় যথাক্রমে নাইট, আর্চার ও বন্দী জেগে আছে কি না। শেষ প্যারামিটার দিয়ে বোঝা যায় আনালিনের পোষা কুকুর উপস্থিত আছে কি না। তিন চরিত্রের অবস্থা এবং আনালিনের পোষা কুকুরের উপস্থিতির ভিত্তিতে বন্দীকে মুক্ত করা গেলে ফাংশনটি True রিটার্ন করে। নাহলে False রিটার্ন করে:

knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
petDogIsPresent = False

canFreePrisoner knightIsAwake archerIsAwake prisonerIsAwake petDogIsPresent
    --> False

5. চুপিসারে আক্রমণে কত ড্যামেজ হতে পারে তা গুনুন

stealthAttackDamage ফাংশনটি ইমপ্লিমেন্ট করুন, যা একটি বুলিয়ান মান নেয় এবং তা দিয়ে বোঝা যায় আনালিন ধরা পড়েছে কি না। সে ধরা পড়লে এই ফাংশনটি ৭ রিটার্ন করে, নাহলে ১২।

annalynIsDetected = True

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

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

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