ইতিমধ্যে এই প্রশ্নটি যে উত্তম উত্তর পেয়েছে তা পরিপূরক করার জন্য, আমি মনে করেছি যে একবার হাতের তুলনা করার জন্য সবচেয়ে সহজ উপায়ের সাথে বেসিক শ্রেণিবদ্ধকরণের কৌশলটি একবারে দেওয়া কার্যকর হবে। প্রথমত, আপনি তাদের শ্রেণীর সাথে হাত ট্যাগ করতে চাইবেন , যেমন অসংখ্য উত্তর বলেছে - আপনার বেশিরভাগ তুলনা 'হ্যান্ড এক্স এর চেয়ে ভাল হাতের চেয়ে ভাল?' তারপরে কেবল দুই হাতের ক্লাসের তুলনা করে এবং কোন ক্লাসটি ভাল seeing বিশ্রামের জন্য, আপনাকে আসলে কার্ড-বাই-কার্ড ভিত্তিতে তুলনা করতে হবে এবং দেখা যাচ্ছে যে শ্রেণিবিন্যাসে আরও কিছুটা কাজ এটিকে সহজ করে তুলবে।
বেসলাইন কেস হিসাবে, উভয় হাত যেখানে 'হাই কার্ড' হাত রয়েছে সেই পরিস্থিতিটি বিবেচনা করুন; এই ক্ষেত্রে, আপনি প্রথমে দুটি সর্বোচ্চ কার্ডের তুলনা করতে চান, তারপরে (যদি তারা মিলছে) পরবর্তী দুটি কার্ড ইত্যাদি you আপনি যদি ধরে নেন যে প্রতিটি ইনপুট হাতটি সর্বোচ্চ থেকে নিম্নতম কার্ডে সাজানো থাকে, তবে এই পদ্ধতির কোডের দিকে যেতে হবে যা দেখে মনে হচ্ছে এই:
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 লিখবেন এবং এটি খুঁজে পাবেন) এ 9972 জিতেছে)। দুটি জোড়ার একটি হাত দুটি জোড়ার উপরের সাথে প্রথমে, তারপরে নীচের দিকে, তারপরে 'কিকার' (তাই, যেমন, A9977 97A97 হিসাবে সংরক্ষণ করবে) দিয়ে সংরক্ষণ করা হবে; তিনটি ধরণের তিনটি প্রথমে তিনটির একটি কার্ডের সাথে সংরক্ষণ করা হবে, তারপরে কিকরগুলি, তারপরে অন্যান্য কার্ডগুলি (যেমন, A7772 হবে 7A277); একটি পূর্ণ ঘর তার তিনটির একটির সাথে এবং তার পরে তার দুটির মধ্যে একটি দিয়ে সংরক্ষণ করা হবে (যেমন, 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);
}
}
আশা করি এটি কিছুটা কাজে আসবে!