private ICollection<CardType> GetStraightCards(int[] cardTypeCounts)
{
var lastCardType = cardTypeCounts.Length;
var straightLength = 0;
for (var i = cardTypeCounts.Length - 1; i >= 1; i--)
{
var hasCardsOfType = cardTypeCounts[i] > 0 || (i == 1 && cardTypeCounts[(int)CardType.Ace] > 0);
if (hasCardsOfType && i == lastCardType - 1)
{
straightLength++;
if (straightLength == ComparableCards)
{
var bestStraight = new List<CardType>(ComparableCards);
for (var j = i; j <= i + ComparableCards - 1; j++)
{
if (j == 1)
{
bestStraight.Add(CardType.Ace);
}
else
{
bestStraight.Add((CardType)j);
}
}
return bestStraight;
}
}
else
{
straightLength = 0;
}
lastCardType = i;
}
return null;
}