It's simpler to just implement a single check for color in the same
loop that's examining the color of every card. We don't need to
check every pair of cards for matching color as we were in the old
loop.
{
int i;
int lowest = 14, highest = 0;
+ color_t run_color;
+
if (card_group->num_cards > 13 || card_group->num_cards < 3)
{
return 0;
}
- for (i = 0; i < card_group->num_cards - 1; ++i)
+
+ run_color = card_group->cards[i].color;
+
+ for (i = 0; i < card_group->num_cards; i++)
{
- if (card_group->cards[i].color != card_group->cards[i + 1].color)
- {
+ if (card_group->cards[i].color != run_color)
return 0;
- }
- }
- for (i = 0; i < card_group->num_cards; ++i)
- {
+
if (card_group->cards[i].number > highest)
{
highest = card_group->cards[i].number;