निम का संशोधित खेल सरणियों का एक अनुकूलन खेल है। यह गेम शुरुआती खिलाड़ी और इष्टतम चालों के आधार पर विजेता की भविष्यवाणी करता है।
गेम लॉजिक - इस खेल में, हमें एक सरणी {} दी जाती है, जिसमें तत्व होते हैं। आम तौर पर दो खिलाड़ी होते हैं जो खेल खेलते हैं अर्थात् खिलाड़ी 1 और खिलाड़ी 2। दोनों का उद्देश्य यह सुनिश्चित करना है कि उनके सभी नंबर ऐरे से हटा दिए जाएं। अब, खिलाड़ी 1 को उन सभी संख्याओं को हटाना होगा जो 3 से विभाज्य हैं और खिलाड़ी 2 को 5 से विभाज्य सभी संख्याओं को हटाना है। उद्देश्य यह सुनिश्चित करना है कि वे सभी तत्वों को बेहतर तरीके से हटा दें और इस मामले में विजेता को खोजें।पी>
नमूना
Array : {1,5, 75,2,65,7,25,6} Winner : playerB. A removes 75 -> B removes 5 -> A removes 6 -> B removes 65 -> No moves for A, B wins.
कोड पूर्वावलोकन
कोड उन तत्वों की संख्या का पता लगाएगा जिन्हें A हटा सकता है, उन तत्वों की संख्या जिन्हें B हटा सकता है और उन तत्वों की संख्या जिन्हें वे दोनों हटा सकते हैं। तत्वों की संख्या के आधार पर वे दोनों दूर कर सकते हैं समाधान पाया जाता है। जैसे ही A पहले तत्वों को हटाता है, वह जीत सकता है, भले ही उसे B से एक तत्व अधिक निकालना पड़े। सामान्य स्थिति में, वह खिलाड़ी जिसके पास जीतने के लिए अधिकतम तत्वों की संख्या होती है।
NIM के खेल का समाधान खोजने का कार्यक्रम
#include <bits/stdc++.h> using namespace std; int main() { int arr[] = {1,5, 75,2,65,7,25,6}; int n = sizeof(arr) / sizeof(arr[0]); int movesA = 0, movesB = 0, movesBoth = 0; for (int i = 0; i < n; i++) { if (arr[i] % 3 == 0 && arr[i] % 5 == 0) movesBoth++; else if (arr[i] % 3 == 0) movesA++; else if (arr[i] % 5 == 0) movesB++; } if (movesBoth == 0) { if (movesA > movesB) cout<<"Player 1 is the Winner"; cout<<"Player 2 is the Winner"; } if (movesA + 1 > movesB) cout<<"Player 1 is the Winner"; cout<<"Player 2 is the Winner"; ; return 0; }
आउटपुट
Player 2 is the Winner