private int HowManyPairs(IDeckDict <CribbageCard> thisCol)
        {
            var          newCol = thisCol.ToRegularDeckDict();
            int          output = 0;
            CribbageCard newCard;
            DeckRegularDict <CribbageCard> finals = new DeckRegularDict <CribbageCard>();

            newCol.Add(StartCard());
            newCol.RemoveAllOnly(items => items.HasUsed);
            var whatNewRummy = _rummys !.WhatNewRummy(newCol, 2, RummyProcesses <EnumSuitList, EnumColorList, CribbageCard> .EnumRummyType.Sets, false);

            if (whatNewRummy.Count == 0)
            {
                return(0);
            }
            if (whatNewRummy.Count > 2)
            {
                finals.AddRange(newCol);
                newCard = whatNewRummy.First();
                finals.KeepConditionalItems(items => items.Value != newCard.Value);
                newCol.Clear();
                newCol.AddRange(finals);
                whatNewRummy = _rummys.WhatNewRummy(newCol, 2, RummyProcesses <EnumSuitList, EnumColorList, CribbageCard> .EnumRummyType.Sets, false);
                if (whatNewRummy.Count == 0)
                {
                    return(0);
                }
                finals.Clear();
            }
            output++;
            newCard = whatNewRummy.First();
            finals.Clear();
            finals.AddRange(newCol);
            finals.KeepConditionalItems(items => items.Value != newCard.Value); //i think
            newCol.Clear();
            newCol.AddRange(finals);
            whatNewRummy = _rummys.WhatNewRummy(newCol, 2, RummyProcesses <EnumSuitList, EnumColorList, CribbageCard> .EnumRummyType.Sets, false);
            if (whatNewRummy.Count == 0)
            {
                return(output);
            }
            if (whatNewRummy.Count > 2)
            {
                return(output);
            }
            return(output + 1);
        }
        private int FindBestCard(DeckRegularDict <RegularSimpleCard> list)
        {
            var bestsuit = list.GroupBy(x => x.Suit).OrderByDescending(Temps => Temps.Count());
            var suituse  = bestsuit.First().Key;

            list.KeepConditionalItems(Items => Items.Suit == suituse);
            return(list.GetRandomItem().Deck);
        }
        public bool HadProperKind(IDeckDict <CribbageCard> thisCol, CribbageCombos thisCombo)
        {
            var newCol = thisCol.ToRegularDeckDict();
            DeckRegularDict <CribbageCard> finals = new DeckRegularDict <CribbageCard>();

            newCol.Add(StartCard());
            finals.AddRange(newCol);
            finals.KeepConditionalItems(items => items.HasUsed == false);
            newCol.Clear();
            newCol.AddRange(finals);
            var whatNewRummy = _rummys !.WhatNewRummy(newCol, thisCombo.NumberForKind, RummyProcesses <EnumSuitList, EnumColorList, CribbageCard> .EnumRummyType.Sets, false);

            if (whatNewRummy.Count == 0)
            {
                return(false);
            }
            if (whatNewRummy.Count > thisCombo.NumberForKind)
            {
                return(false);
            }
            whatNewRummy.ForEach(thisCard => thisCard.HasUsed = true);
            return(true);
        }