summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-12-14 21:34:22 +0100
committerMartin Polden <mpolden@mpolden.no>2023-12-14 21:39:47 +0100
commitd3dc5739e86fcbdf3037dcc39872103319c8d89a (patch)
tree0df5fad119293d1d8f27729a3ea14afa38917f7c
parentc2578ca66c20510c11f63c53de8355b1405b324d (diff)
aoc23: remove unused field
-rw-r--r--aoc23/day04_test.go24
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])
}