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)); }
private static string GetDescriptorForSevenCardsHandOffsuit(SevenCardsHand sevenCardsHand) { return(string.Join("", sevenCardsHand.Cards.Select(c => TexasBot.Tools.Utils.GetStringForRank(c.Rank)))); }
public static BestFiveCardsHand FindBestFive(SevenCardsHand sevenCardsHand) { throw new NotImplementedException(); }