F#-এ বুলিয়ানকে bool টাইপ দিয়ে প্রকাশ করা হয়, যার মান true বা false হতে পারে।
F# তিনটি বুলিয়ান অপারেটর সমর্থন করে: not (NOT), && (AND), এবং || (OR).
এই অনুশীলনীতে আপনি একটি নতুন RPG গেমের অভিযানের লজিক ইমপ্লিমেন্ট করবেন, যেটি আপনার এক বন্ধু তৈরি করছেন। গেমটির প্রধান চরিত্র অ্যানালিন, একজন সাহসী মেয়ে, যার আছে একটি ভয়ংকর ও বিশ্বস্ত পোষা কুকুর। দুর্ভাগ্যবশত, বিপর্যয় নেমে আসে: বনের মধ্যে বেরি খুঁজতে গিয়ে তার প্রিয় বন্ধুকে অপহরণ করা হয়। অ্যানালিন তার প্রিয় বন্ধুকে খুঁজে বের করে মুক্ত করার চেষ্টা করবে, এবং চাইলে এই অভিযানে তার কুকুরটিকেও সঙ্গে নিতে পারে।
কিছু সময় ধরে তার প্রিয় বন্ধুর পায়ের চিহ্ন অনুসরণ করার পর, সে সেই শিবির খুঁজে পায় যেখানে তার প্রিয় বন্ধুকে বন্দি করে রাখা হয়েছে। দেখা যায়, অপহরণকারী দুজন: একজন শক্তিশালী নাইট এবং একজন চতুর তিরন্দাজ।
অপহরণকারীদের খুঁজে পেয়ে, অ্যানালিন ভাবতে থাকে নিচের কোন কোন কাজ সে করতে পারে:
আপনার সামনে চারটি কাজ রয়েছে: বনের মধ্যে পাওয়া তিনটি চরিত্রের অবস্থা এবং অ্যানালিনের পোষা কুকুর উপস্থিত আছে কি না, তার ভিত্তিতে উপরের কাজগুলো করা সম্ভব কি না তা নির্ধারণের লজিক ইমপ্লিমেন্ট করা।
canFastAttack ফাংশনটি ইমপ্লিমেন্ট করুন, যা একটি বুলিয়ান মান নেয়, যেটি নির্দেশ করে নাইট জেগে আছে কি না। নাইটের অবস্থার ভিত্তিতে দ্রুত আক্রমণ করা যায় কি না, তা হলে এই ফাংশনটি true রিটার্ন করে। অন্যথায়, false রিটার্ন করে:
let knightIsAwake = true
canFastAttack(knightIsAwake)
// => false
canSpy ফাংশনটি ইমপ্লিমেন্ট করুন, যা তিনটি বুলিয়ান মান নেয়, যেগুলো যথাক্রমে নির্দেশ করে নাইট, তিরন্দাজ এবং বন্দি জেগে আছে কি না। তিনটি চরিত্রের অবস্থার ভিত্তিতে দলটির উপর গুপ্তচরবৃত্তি করা যায় কি না, তা হলে ফাংশনটি true রিটার্ন করে। অন্যথায়, false রিটার্ন করে:
let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake)
// => true
canSignalPrisoner ফাংশনটি ইমপ্লিমেন্ট করুন, যা দুটি বুলিয়ান মান নেয়, যেগুলো যথাক্রমে নির্দেশ করে তিরন্দাজ এবং বন্দি জেগে আছে কি না। দুই চরিত্রের অবস্থার ভিত্তিতে বন্দিকে সংকেত পাঠানো যায় কি না, তা হলে ফাংশনটি true রিটার্ন করে। অন্যথায়, false রিটার্ন করে:
let archerIsAwake = false
let prisonerIsAwake = true
canSignalPrisoner(archerIsAwake, prisonerIsAwake)
// => true
canFreePrisoner ফাংশনটি ইমপ্লিমেন্ট করুন, যা চারটি বুলিয়ান মান নেয়। প্রথম তিনটি প্যারামিটার যথাক্রমে নির্দেশ করে নাইট, তিরন্দাজ এবং বন্দি জেগে আছে কি না। শেষ প্যারামিটারটি নির্দেশ করে অ্যানালিনের পোষা কুকুর উপস্থিত আছে কি না। তিনটি চরিত্রের অবস্থা এবং অ্যানালিনের পোষা কুকুরের উপস্থিতির ভিত্তিতে বন্দিকে মুক্ত করা যায় কি না, তা হলে ফাংশনটি true রিটার্ন করে। অন্যথায়, এটি false রিটার্ন করে:
let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
let petDogIsPresent = false
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent)
// => false
Exercism-এ সাইন আপ করুন, F# ট্র্যাকের 18টি কনসেপ্ট148টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।