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); }
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)); }