/// <summary> /// Generate random hands, and write out the details of those under-ranked /// by the rank predicate methods. This would happen if one or more of the /// rank predicate methods returned false negatives. /// </summary> public static void WriteErrantRandomHands( int numSamplesPerSimpleRank = 100, int numCardsDealt = 5, int numCardsInFinalHand = 5) { Ranker ranker = new Ranker(numCardsInFinalHand, false); TestHandGenerator handGen = new TestHandGenerator(0); foreach (SimpleRank sRank in Ranker.StandardRanks) { // Console.WriteLine(); Console.Write("Press enter to see errant hands of type {0:s}", sRank.ToString()); Console.Out.Flush(); Console.ReadLine(); for (int i = 0; i < 1000; i++) { Hand h = handGen.Generators[sRank](numCardsDealt, numCardsInFinalHand); FullRank fRank; HandCard[] hcsRank; HandCard[] hcsFill; ranker.GetFullRank(h, null, out fRank, out hcsRank, out hcsFill); if (fRank.SRank != sRank) { Console.WriteLine("Attempt to create {0:s} yielded {1:s}", sRank.ToString(), fRank.SRank.ToString()); Console.Write(" "); Hand.WriteHandData(h, null, fRank, hcsRank, hcsFill); } } } }
public static void WriteTestHandRanks(Ranker ranker, IEnumerable <Card> wilds) { Console.WriteLine(); Console.WriteLine("Press enter to write out evaluation of each test hand for each rank."); Console.ReadLine(); foreach (Hand h in TestHands.Hands) { FullRank fRank; HandCard[] hcsRank; HandCard[] hcsFill; ranker.GetFullRank(h, wilds, out fRank, out hcsRank, out hcsFill); Hand.WriteHandData(h, wilds, fRank, hcsRank, hcsFill); } }
public static void WriteRankProfile(Hand hand, IEnumerable <Card> wildCards, Ranker ranker) { HandInfo hi = new HandInfo(hand, wildCards); foreach (SimpleRank sRank in Ranker.StandardRanks) { FullRank fRank; HandCard[] hcsRank; HandCard[] hcsFill; if (ranker.RankPredicateMap[sRank](hi, out fRank, out hcsRank, out hcsFill)) { Console.WriteLine("Examining hand as a hand of rank {0:s}", fRank.SRank.ToString()); Console.Write(" "); Hand.WriteHandData(hand, wildCards, fRank, hcsRank, hcsFill); } } }
public static void WriteRandomHandProfiles( Ranker ranker, int numCardsDealt = 7, int numCardsInFinalHand = 5, IEnumerable <Card> wilds = null, int numSamplesPerSimpleRank = 10) { Console.WriteLine(); Console.WriteLine("Press enter to write out full evaluation of random hands."); Console.Out.Flush(); Console.ReadLine(); TestHandGenerator handGen = new TestHandGenerator(0); foreach (SimpleRank sRank in Ranker.StandardRanks) { Console.WriteLine(); Console.Write("Press enter to see full evaluation of hands of type {0:s}", sRank.ToString()); Console.Out.Flush(); Console.ReadLine(); for (int i = 0; i < numSamplesPerSimpleRank; i++) { Hand h = handGen.Generators[sRank](numCardsDealt, numCardsInFinalHand); HandInfo hi = new HandInfo(h, wilds); foreach (SimpleRank sRank2 in Ranker.StandardRanks) { FullRank fRank; HandCard[] hcsRank; HandCard[] hcsFill; if (ranker.RankPredicateMap[sRank2](hi, out fRank, out hcsRank, out hcsFill)) { Console.WriteLine("Examining hand as a hand of rank {0:s}", fRank.SRank.ToString()); Console.Write(" "); Hand.WriteHandData(h, wilds, fRank, hcsRank, hcsFill); } } } } }