スリーカードやフォーカードとは異なるペアを探していると思います。その場合、そのための最善の策は、各カードを調べて、エースの数、2 の数、3 の数などを保存することです。このソリューションでは、ペアの数と、スリー/フォーカードまたはフルハウスがあるかどうかがわかります。もちろん、フラッシュまたはストレートを探すときは、別のチェックを行う必要があります。
Card[] hand = new Card[numberOfCards];
int[] frequencies = new int[13]; // there are 13 card values
...
for (int i = 0; i < hand.Count; i++)
{
frequencies[hand[i].CardNumber] += 1; // assume Ace = 0, King = 12
}
// Now look through the frequencies:
int numberOfPairs = 0;
bool hasTriple = false;
bool hasFour = false;
for (int f = 0; j < frequencies.Count; j++)
{
switch (frequencies[f])
{
case 2:
numberOfPairs++;
break;
case 3:
hasTriple = true;
break;
case 4:
hasFour = true;
break;
default:
break;
}
}
// Now you know how many pairs you have, and whether you have a triple or four-of-a-kind
if (numberOfPairs == 1 && hasTriple)
{
// It's a full house
}
編集:
ペア (エースのペアまたはクイーンのペアなど) を構成する数字の記録を保持するためにこれを変更することも簡単です。