Cairo-তে বুলিয়ান মান প্রকাশ করা হয় আগে থেকেই ঘোষিত বুলিয়ান টাইপ bool দিয়ে, যার মান true কিংবা false হতে পারে।
let speeding = true; // Boolean variable 'speeding' set to 'true'
let has_error = false; // Boolean variable 'has_error' set to 'false'
Cairo তিনটি লজিক্যাল অপারেটর সমর্থন করে, যেগুলো এক্সপ্রেশনকে বুলিয়ান মান পর্যন্ত মূল্যায়ন করতে পারে এবং true অথবা false রিটার্ন করে।
| অপারেটর | এর অর্থ |
|---|---|
&& (এবং) |
উভয় বিবৃতি ট্রু হলে এটি ট্রু হয়। |
|| (অথবা) |
অন্তত একটি বিবৃতি ট্রু হলে এটি ট্রু হয়। |
! (নয়) |
কেবল বিবৃতিটি ফলস হলেই এটি ট্রু হয়। |
এই অনুশীলনীতে আপনি আপনার এক বন্ধুর তৈরি করা নতুন একটি RPG গেমের কোয়েস্ট লজিক বাস্তবায়ন করবেন। গেমটির প্রধান চরিত্র Annalyn, একজন সাহসী মেয়ে, যার আছে একটি হিংস্র ও বিশ্বস্ত পোষা কুকুর। দুর্ভাগ্যবশত, বিপর্যয় নেমে আসে: বনের মধ্যে বেরি খুঁজতে গিয়ে তার প্রিয় বন্ধু অপহৃত হয়। Annalyn তার প্রিয় বন্ধুকে খুঁজে বের করে মুক্ত করার চেষ্টা করবে, আর চাইলে এই কোয়েস্টে তার কুকুরটিকেও সঙ্গে নিয়ে যাবে।
তার প্রিয় বন্ধুর রেখে যাওয়া চিহ্ন ধরে কিছু সময় এগোনোর পর, সে সেই শিবির খুঁজে পায় যেখানে তার প্রিয় বন্ধুকে বন্দি করে রাখা হয়েছে। দেখা যায় অপহরণকারী দুজন: একজন শক্তিশালী নাইট এবং একজন চতুর তিরন্দাজ।
অপহরণকারীদের খুঁজে পেয়ে Annalyn ভেবে দেখে নিচের কোন কোন কাজ সে করতে পারে:
আপনার চারটি কাজ: বনের মধ্যে পাওয়া তিনটি চরিত্রের অবস্থা এবং Annalyn-এর পোষা কুকুর উপস্থিত আছে কি না, তার ভিত্তিতে উপরোক্ত কাজগুলো করা সম্ভব কি না তা নির্ণয়ের লজিক বাস্তবায়ন করা।
can_fast_attack() ফাংশনটি ডিফাইন করুন, যেটি একটি বুলিয়ান মান নেয় যা নির্দেশ করে নাইট জেগে আছে কি না।
নাইটের অবস্থার ভিত্তিতে দ্রুত আক্রমণ করা সম্ভব হলে ফাংশনটি true রিটার্ন করে।
নাহলে false রিটার্ন করে:
let knight_awake = true;
can_fast_attack(knight_awake); // false
can_spy() ফাংশনটি ডিফাইন করুন, যেটি তিনটি বুলিয়ান মান নেয়, যা যথাক্রমে নাইট, তিরন্দাজ ও বন্দি জেগে আছে কি না তা নির্দেশ করে।
তিনটি চরিত্রের অবস্থার ভিত্তিতে দলটির উপর গুপ্তচরবৃত্তি করা সম্ভব হলে ফাংশনটি true রিটার্ন করে।
নাহলে false রিটার্ন করে:
let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
can_spy(knight_awake, archer_awake, prisoner_awake); // true
can_signal_prisoner() ফাংশনটি ডিফাইন করুন, যেটি দুটি বুলিয়ান মান নেয়, যা যথাক্রমে তিরন্দাজ ও বন্দি জেগে আছে কি না তা নির্দেশ করে।
দুটি চরিত্রের অবস্থার ভিত্তিতে বন্দিকে সংকেত পাঠানো সম্ভব হলে ফাংশনটি true রিটার্ন করে।
নাহলে false রিটার্ন করে:
let archer_awake = false;
let prisoner_awake = true;
can_signal_prisoner(archer_awake, prisoner_awake); // true
can_free_prisoner() ফাংশনটি ডিফাইন করুন, যেটি চারটি বুলিয়ান মান নেয়।
প্রথম তিনটি প্যারামিটার নির্দেশ করে যথাক্রমে নাইট, তিরন্দাজ ও বন্দি জেগে আছে কি না।
শেষ প্যারামিটারটি নির্দেশ করে Annalyn-এর পোষা কুকুর উপস্থিত আছে কি না।
তিনটি চরিত্রের অবস্থা এবং Annalyn-এর পোষা কুকুরের উপস্থিতির ভিত্তিতে বন্দিকে মুক্ত করা সম্ভব হলে ফাংশনটি true রিটার্ন করে।
নাহলে false রিটার্ন করে:
let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
let dog_present = false;
can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present); // false
Exercism-এ সাইন আপ করুন, Cairo ট্র্যাকের 25টি কনসেপ্ট68টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।