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

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

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

ভূমিকা

বুলিয়ান

F#-এ বুলিয়ানকে bool টাইপ দিয়ে প্রকাশ করা হয়, যার মান true বা false হতে পারে।

F# তিনটি বুলিয়ান অপারেটর সমর্থন করে: not (NOT), && (AND), এবং || (OR).

নির্দেশনা

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

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

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

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

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

1. দ্রুত আক্রমণ করা যায় কি না তা যাচাই করুন

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

let knightIsAwake = true
canFastAttack(knightIsAwake)
// => false

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

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

let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake)
// => true

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

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

let archerIsAwake = false
let prisonerIsAwake = true
canSignalPrisoner(archerIsAwake, prisonerIsAwake)
// => true

4. বন্দিকে মুক্ত করা যায় কি না তা যাচাই করুন

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

let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
let petDogIsPresent = false
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent)
// => false
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
F# Exercism

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

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