From: Carl Worth Date: Mon, 29 Jan 2007 15:19:33 +0000 (-0800) Subject: Implement card_group_is_run with one loop instead of two. X-Git-Url: https://git.cworth.org/git?p=kub;a=commitdiff_plain;h=de58f6c53ee85cf0db3bbed62101901f651db108 Implement card_group_is_run with one loop instead of two. 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. --- diff --git a/kub.c b/kub.c index 299eb07..aec86be 100644 --- a/kub.c +++ b/kub.c @@ -84,19 +84,20 @@ static int card_group_is_run(card_group_t *card_group) { 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;