private static uint FlushDraw(int[] cards, int[] hole) { //各スートの枚数 int[] suitCount = RankScore.CountSuit(cards); //フラッシュドロー、ナッツフラドロの検査 for (int i = 0; i < suitCount.Length; i++) { //フラドロ以上 if (suitCount[i] >= 4) { //手札と与えられたカード全体から指定のスートを抽出してカードランクをフラグに変換 uint flag_cards = RankScore.HighCard(cards.Where(id => id / 13 == i).ToArray()); uint flag_hand = RankScore.HighCard(hole.Where(id => id / 13 == i).ToArray()); //繰り上がりで15ビット目が立つならナッツフラドロ if (flag_cards + flag_hand >= 0x4000) { return(NUTS_FLUSH_DRAW); } else { return(FLUSH_DRAW); } } } return(NO_DRAW); }