उत्कृष्ट उत्तरों के पूरक के लिए यह प्रश्न पहले ही मिल गया है, मुझे लगा कि मूल वर्गीकरण तकनीक के एक बार हाथों की तुलना करने के सबसे सरल तरीकों में से एक की पेशकश करना सहायक होगा। सबसे पहले, आप अपनी कक्षा के साथ हाथों को टैग करना चाहेंगे , क्योंकि कई उत्तर सुझाए गए हैं - आपकी अधिकांश तुलना 'हैंड एक्स हाथ से बेहतर है?' फिर दोनों हाथों की कक्षाओं की तुलना करके और यह देखा जा सकता है कि कौन सी कक्षा बेहतर है। बाकी के लिए, आपको वास्तव में कार्ड-बाय-कार्ड के आधार पर तुलना करने की आवश्यकता होगी, और यह पता चला है कि वर्गीकरण में थोड़ा और अधिक काम यह आसान बना देगा।
बेसलाइन मामले के रूप में, उस स्थिति पर विचार करें जहां दोनों हाथ 'उच्च कार्ड' हाथ हैं; इस स्थिति में, आप पहले दो उच्चतम कार्डों की तुलना करेंगे, फिर (यदि वे मिलान किए गए) अगले दो कार्ड्स इत्यादि। इस:
int CompareHandsOfSameClass(Hand h1, Hand h2) {
for ( int i = 0; i < 5; i++ ) {
if ( h1[i].rank > h2[i].rank ) {
return -1;
} else if ( h1[i].rank < h2[i].rank ) {
return 1;
}
}
return 0;
}
अब, अच्छी खबर: यह पता चलता है कि यह शाब्दिक आदेश , उपयुक्त रूप से ट्वीक किया गया है, किसी भी में दो हाथों की तुलना करने के लिए काम करता हैकक्षाओं के रूप में, जब तक कि उनकी कक्षा समान है। उदाहरण के लिए, चूंकि जोड़े की तुलना करने का तरीका पहले जोड़े की तुलना करना है, फिर अन्य तीन कार्ड, आप जोड़ी को पहले रखने के लिए अपना हाथ छांट सकते हैं (या पहले जोड़ी का एक कार्ड भी!) और इसी तुलना को चलाएं। (इसलिए, उदाहरण के लिए, A9772 की तरह एक हाथ 77A92 या बेहतर अभी तक, 7A927 के रूप में संग्रहीत किया जाएगा; हाथ A9972 को 9A729 के रूप में संग्रहीत किया जाएगा, और उपरोक्त कोड के साथ तुलना करके आप 9 के खिलाफ 7 पेज शुरू करेंगे और पाएंगे कि A9972 जीता)। दो जोड़ी का एक हाथ पहले दो जोड़े के उच्च के साथ संग्रहीत किया जाएगा, फिर निचले, फिर 'किकर' (इसलिए, ए 9977 97A97 के रूप में संग्रहीत किया जाएगा); एक प्रकार के तीन को पहले तीन के एक कार्ड के साथ संग्रहीत किया जाएगा, फिर किकर्स, फिर अन्य कार्ड (जैसे, ए 7772 7 ए 277); एक पूर्ण घर अपने तीन में से एक के साथ संग्रहीत किया जाएगा और फिर उसके दो में से एक (जैसे, 99777 79779 के रूप में संग्रहीत किया जाएगा); और स्ट्रैट्स और फ्लश दोनों को 'डायरेक्ट लेक्सिकोग्राफ़िक' ऑर्डर में स्टोर किया जा सकता है क्योंकि दोनों की तुलना ऐसे की जाती है जैसे हाई-कार्ड हाथों में होती है। इससे एक सीधा बाहरी तुलनित्र कार्य होता है जो पहले से दिए गए फ़ंक्शन के साथ सभी वर्गों के लिए काम करता है:
// Compare two hands, returning -1/0/+1 as hand 1 is less than, equal to,
// or greater than hand 2. Note that this function assumes the hands have
// already been classified and sorted!
int CompareHands(Hand h1, Hand h2) {
if ( h1.handClass > h2.handClass ) {
return -1;
} else if ( h1.handClass < h2.handClass ) {
return 1;
} else {
return CompareHandsOfSameClass(h1, h2);
}
}
उम्मीद है कि यह कुछ मदद की जाएगी!