Ejemplo n.º 1
0
        private static Dictionary <string, StartingHand> SetupStartingHands()
        {
            string[] ranks = Card.PossibleRanksHighCardFirst.Reverse().ToArray();
            Dictionary <string, StartingHand> hands = new Dictionary <string, StartingHand>();

            for (int i = 12; i >= 0; --i)
            {
                for (int j = 12; j >= 0; --j)
                {
                    string text;

                    if (i > j)
                    {
                        text = ranks[i] + ranks[j] + "o";
                    }
                    else if (i < j)
                    {
                        text = ranks[j] + ranks[i] + "s";
                    }
                    else
                    {
                        text = ranks[i] + ranks[j];
                    }

                    StartingHand hand = new StartingHand(text);
                    hands.Add(text, hand);
                }
            }

            return(hands);
        }
Ejemplo n.º 2
0
        private string ToStringMultiple()
        {
            List <string>            retVal        = new List <string>();
            SortedSet <ulong>        hands         = new SortedSet <ulong>(this);
            RangeComparer            rangeComparer = new RangeComparer();
            SortedSet <StartingHand> sHands        = new SortedSet <StartingHand>(rangeComparer);

            foreach (StartingHand hand in StartingHand.AllStartingHands.Values)
            {
                if (hands.IsSupersetOf(hand))
                {
                    hands.RemoveWhere(h => hand.Contains(h));
                    sHands.Add(hand);
                }
            }

            List <StartingHand> run = new List <StartingHand>();

            foreach (StartingHand hand in sHands)
            {
                if (run.Count == 0 || rangeComparer.Compare(run.Last(), hand) == 1)
                {
                    run.Add(hand);
                }
                else
                {
                    StartingHand start = run.Last();
                    StartingHand end   = run.First();
                    if (end.PrimaryRank - end.SecondaryRank == 1)
                    {
                        retVal.Add(start.ToString() + "+");
                    }
                    else
                    {
                        retVal.Add(start.ToString() + "-" + end.ToString());
                    }
                }
            }

            return(string.Join(", ", retVal));
        }