Намиране на последователни карти

djman

Registered
Здравейте :) От няколко дена си блъскам главата как ще стане следния проблем...

Имам ръка с 5 или 6 карти.
Как мога да намеря кои са последователни от една и съща боя, например 3D 4D 5D ? Но уловката е, че може да са 3, но може и да са 4, 5 или дори всичките 6.
Това което успявам да направя е да изкарва следните неща при 6 последователни от една боя:

3 4 5
3 4 5 6
3 4 5 6 7
3 4 5 6 7 8

4 5 6
4 5 6 7
................

Всяка карта има пропърти Suit и Rank... Всяка идея би била от полза :)) Благодаря много.
 
Код:
public List<List<Card>> GetRuns()
        {
            List<List<Card>> lists = new List<List<Card>>();

            for (int cur = 0; cur < cards.Count-1; cur++)
            {
                List<Card> listCards = new List<Card>();

                for (int plusOne = cur + 1; plusOne < cards.Count; plusOne++)
                {                    
                    if (cards[cur].Suit == cards[plusOne].Suit && 
                        (cards[cur].Rank == cards[plusOne].Rank - (cards[plusOne].Rank - cards[cur].Rank)))
                    {
                        listCards.Add(cards[plusOne]);
                    }
                }

                if (listCards.Count > 0)
                {
                    listCards.Insert(0, cards[cur]);
                    lists.Add(listCards);
                 }
            }

            return lists;
        }

И ако в ръката имам следните карти: 3C 4C 5C 6C 7H 8H, изхода е следния:

Код:
3C 4C 5C 6C
4C 5C 6C
5C 6C
7H 8H
 

Back
Горе