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

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

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

ভূমিকা

Go-তে বুলিয়ান প্রকাশ করা হয় পূর্বঘোষিত বুলিয়ান টাইপ bool দিয়ে, যার মান true বা false হতে পারে। এটি একটি ডিফাইনড টাইপ।

var closed bool    // boolean variable 'closed' implicitly initialized with 'false'
speeding := true   // boolean variable 'speeding' initialized with 'true'
hasError := false  // boolean variable 'hasError' initialized with 'false' 

Go তিনটি লজিক্যাল অপারেটর সমর্থন করে, যেগুলো এক্সপ্রেশনকে বুলিয়ান মান পর্যন্ত মূল্যায়ন করতে পারে এবং true বা false রিটার্ন করে।

অপারেটর এর অর্থ
&& (এবং) দুটি বিবৃতিই সত্য হলে এটি সত্য হয়।
|| (অথবা) অন্তত একটি বিবৃতি সত্য হলে এটি সত্য হয়।
! (নয়) বিবৃতিটি মিথ্যা হলেই এটি সত্য হয়।

নির্দেশনা

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

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

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

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

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

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

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

var knightIsAwake = true
fmt.Println(CanFastAttack(knightIsAwake))
// Output: false

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

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

var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
fmt.Println(CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake))
// Output: true

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

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

var archerIsAwake = false
var prisonerIsAwake = true
fmt.Println(CanSignalPrisoner(archerIsAwake, prisonerIsAwake))
// Output: true

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

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

var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
var petDogIsPresent = false
fmt.Println(CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent))
// Output: false
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Go Exercism

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

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