diff options
author | Martin Polden <mpolden@mpolden.no> | 2023-12-14 21:34:22 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2023-12-14 21:39:47 +0100 |
commit | d3dc5739e86fcbdf3037dcc39872103319c8d89a (patch) | |
tree | 0df5fad119293d1d8f27729a3ea14afa38917f7c | |
parent | c2578ca66c20510c11f63c53de8355b1405b324d (diff) |
aoc23: remove unused field
-rw-r--r-- | aoc23/day04_test.go | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/aoc23/day04_test.go b/aoc23/day04_test.go index 1d7aacd..b334006 100644 --- a/aoc23/day04_test.go +++ b/aoc23/day04_test.go @@ -8,23 +8,21 @@ import ( ) type Card struct { - id int - winners []int - got []int + winning []int + numbers []int } func parseCard(s string) Card { parts := strings.FieldsFunc(s, func(r rune) bool { return r == ':' || r == '|' }) - id := requireInt(strings.Fields(parts[0])[1]) - winners := transform(strings.Fields(parts[1]), requireInt) - slices.Sort(winners) - got := transform(strings.Fields(parts[2]), requireInt) - return Card{id, winners, got} + winning := transform(strings.Fields(parts[1]), requireInt) + slices.Sort(winning) + numbers := transform(strings.Fields(parts[2]), requireInt) + return Card{winning, numbers} } -func countWinners(card Card) int { - return quantify(card.got, func(n int) bool { - _, found := slices.BinarySearch(card.winners, n) +func (c *Card) winners() int { + return quantify(c.numbers, func(n int) bool { + _, found := slices.BinarySearch(c.winning, n) return found }) } @@ -33,7 +31,7 @@ func cardPoints(r io.Reader) int { score := 0 cards := parseLines(r, parseCard) for _, card := range cards { - winners := countWinners(card) + winners := card.winners() if winners > 0 { score += pow(2, winners-1) } @@ -44,7 +42,7 @@ func cardPoints(r io.Reader) int { func countCards(cards []Card) int { sum := 0 for i, card := range cards { - winners := countWinners(card) + winners := card.winners() next := i + 1 sum += 1 + countCards(cards[next:next+winners]) } |