Пример #1
0
        public static string GetDescriptorForSevenCardsHand(SevenCardsHand sevenCardsHand)
        {
            SuitEnum targetSuit = SuitEnum.Heart;

            if (sevenCardsHand.Cards.Count(c => c.Suit == targetSuit) >= 5)
            {
                var suitedCards = sevenCardsHand.Cards.Where(c => c.Suit == targetSuit).ToList();
                suitedCards.Sort((c1, c2) => - c1.Rank.CompareTo(c2.Rank));
                var offsuitCards = sevenCardsHand.Cards.Where(c => c.Suit != targetSuit).ToList();
                offsuitCards.Sort((c1, c2) => - c1.Rank.CompareTo(c2.Rank));
                return(GetDescriptorForSevenCardsHandSutied(suitedCards, targetSuit, offsuitCards));
            }

            targetSuit = SuitEnum.Spade;
            if (sevenCardsHand.Cards.Count(c => c.Suit == targetSuit) >= 5)
            {
                var suitedCards = sevenCardsHand.Cards.Where(c => c.Suit == targetSuit).ToList();
                suitedCards.Sort((c1, c2) => - c1.Rank.CompareTo(c2.Rank));
                var offsuitCards = sevenCardsHand.Cards.Where(c => c.Suit != targetSuit).ToList();
                offsuitCards.Sort((c1, c2) => - c1.Rank.CompareTo(c2.Rank));
                return(GetDescriptorForSevenCardsHandSutied(suitedCards, targetSuit, offsuitCards));
            }

            targetSuit = SuitEnum.Diamond;
            if (sevenCardsHand.Cards.Count(c => c.Suit == targetSuit) >= 5)
            {
                var suitedCards = sevenCardsHand.Cards.Where(c => c.Suit == targetSuit).ToList();
                suitedCards.Sort((c1, c2) => - c1.Rank.CompareTo(c2.Rank));
                var offsuitCards = sevenCardsHand.Cards.Where(c => c.Suit != targetSuit).ToList();
                offsuitCards.Sort((c1, c2) => - c1.Rank.CompareTo(c2.Rank));
                return(GetDescriptorForSevenCardsHandSutied(suitedCards, targetSuit, offsuitCards));
            }

            targetSuit = SuitEnum.Club;
            if (sevenCardsHand.Cards.Count(c => c.Suit == targetSuit) >= 5)
            {
                var suitedCards = sevenCardsHand.Cards.Where(c => c.Suit == targetSuit).ToList();
                suitedCards.Sort((c1, c2) => - c1.Rank.CompareTo(c2.Rank));
                var offsuitCards = sevenCardsHand.Cards.Where(c => c.Suit != targetSuit).ToList();
                offsuitCards.Sort((c1, c2) => - c1.Rank.CompareTo(c2.Rank));
                return(GetDescriptorForSevenCardsHandSutied(suitedCards, targetSuit, offsuitCards));
            }

            return(GetDescriptorForSevenCardsHandOffsuit(sevenCardsHand));
        }
        public double CalculateEquityAgainstGrid(HoldingHoles heroHoles, HoldingHoles villainHoles, BoardStatus boardStatus)
        {
            var boards =
                boardStatus.GenerateAllPossibleBoards(new List <Card>()
            {
                heroHoles.Hole1,
                heroHoles.Hole2,
                villainHoles.Hole1,
                villainHoles.Hole2
            });

            double heroWin = 0, villainWin = 0;

            foreach (var board in boards)
            {
                var heroSeven    = new SevenCardsHand(heroHoles.Hole1, heroHoles.Hole2, board.Flop1, board.Flop2, board.Flop3, board.Turn, board.River);
                var villainSeven = new SevenCardsHand(villainHoles.Hole1, villainHoles.Hole2, board.Flop1, board.Flop2, board.Flop3, board.Turn, board.River);

                var heroFive    = BettingUtils.FindBestFive(heroSeven);
                var villainFive = BettingUtils.FindBestFive(villainSeven);

                int heroScore    = BettingUtils.GetScoreForFiveCardHand(heroFive);
                int villainScore = BettingUtils.GetScoreForFiveCardHand(villainFive);

                if (heroScore > villainScore)
                {
                    heroWin++;
                }
                else
                {
                    villainWin++;
                }
            }

            return(heroWin / (heroWin + villainWin));
        }
Пример #3
0
 private static string GetDescriptorForSevenCardsHandOffsuit(SevenCardsHand sevenCardsHand)
 {
     return(string.Join("", sevenCardsHand.Cards.Select(c => TexasBot.Tools.Utils.GetStringForRank(c.Rank))));
 }
Пример #4
0
 public static BestFiveCardsHand FindBestFive(SevenCardsHand sevenCardsHand)
 {
     throw new NotImplementedException();
 }