এই সমস্যাটির নাম নিম খেলা , আমাদের একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া হয়েছে যা পাথরের স্তূপ নির্দেশ করে এবং সেখানে দুটি খেলোয়াড় আছে 'playerA' এবং 'playerB' . আমাদের কাজ হল গেম অফ নিমের বিজয়ীর ভবিষ্যদ্বাণী করার জন্য একটি প্রোগ্রাম তৈরি করা৷
৷নিম খেলা − আমাদের কাছে পাথরের স্তূপ এবং দুইজন খেলোয়াড় 'playerA' আছে এবং 'playerB' . ‘playerA’ হলে প্রতিটি খেলোয়াড় গাদা থেকে একটি স্টোর বাছাই করতে পারে স্তূপ থেকে একটি পাথর তুলতে শুরু করে। আমাদের খেলার বিজয়ীর ভবিষ্যদ্বাণী করতে হবে। স্তুপ থেকে পাথর বাছাই করা শেষ খেলোয়াড় গেমের বিজয়ী৷
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক
Input: N = 6 Output: playerB Explanation : Total stones = 6, players picking stones as playerA - playerB - playerA - playerB - playerA - playerB
সমাধান পদ্ধতি
সমস্যা সমাধানের একটি পদ্ধতি হল N এর মান এবং গেমের বিজয়ীর জন্য সাধারণ সূত্র খুঁজে বের করা। আসুন N-এর কিছু মান দেখি, এবং প্রতিটি ক্ষেত্রে বিজয়ীরা,
N =1, বিজয়ী =playerA
N =2, বিজয়ী =playerB
N =3, বিজয়ী =playerA
এর থেকে, আমরা বের করতে পারি যে যদি N বিজোড় হয়, তাহলে playerA বিজয়ী। আর যদি N হয়, তাহলে প্লেয়ারB বিজয়ী হয়।
উদাহরণ
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম
#include<iostream> using namespace std; bool findGameofNimWinner(int N){ if(N%2 == 0) return 0; else return 1; } int main(){ int N = 26; cout<<"The winner of the Game of Nim is "; findGameofNimWinner(N) ? (cout << "Player A") : (cout << "Player B"); return 0; }
আউটপুট
The winner of the Game of Nim is Player B