示例#1
0
        /// <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);
                    }
                }
            }
        }
示例#2
0
 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);
     }
 }
示例#3
0
        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);
                }
            }
        }
示例#4
0
        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);
                        }
                    }
                }
            }
        }