इस समस्या में निम का खेल . कहा जाता है , हमें एक धनात्मक पूर्णांक N दिया गया है जो पत्थरों के ढेर को दर्शाता है और दो खिलाड़ी हैं 'playerA' और 'खिलाड़ीबी' . हमारा काम गेम ऑफ निम के विजेता की भविष्यवाणी करने के लिए एक प्रोग्राम बनाना है।
NIM का खेल - हमारे पास पत्थरों का ढेर है और दो खिलाड़ी हैं 'playerA' और 'खिलाड़ीबी' . प्रत्येक खिलाड़ी ढेर से एक स्टोर चुन सकता है यदि 'खिलाड़ीए' ढेर में से एक पत्थर उठाना शुरू कर देता है। हमें खेल के विजेता की भविष्यवाणी करने की जरूरत है। ढेर से पत्थर लेने वाला आखिरी खिलाड़ी खेल का विजेता होता है।
समस्या को समझने के लिए एक उदाहरण लेते हैं
Input: N = 6 Output: playerB Explanation : Total stones = 6, players picking stones as playerA - playerB - playerA - playerB - playerA - playerB
समाधान दृष्टिकोण
समस्या को हल करने का एक तरीका एन के मूल्यों और खेल के विजेता के लिए सामान्य सूत्र खोजना है। आइए प्रत्येक मामले में N और विजेताओं के कुछ मान देखें,
N =1, विजेता =खिलाड़ीA
एन =2, विजेता =खिलाड़ी बी
एन =3, विजेता =खिलाड़ीए
इससे हम यह प्राप्त कर सकते हैं कि यदि N विषम है, तो खिलाड़ी A विजेता है। और यदि 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