Skip to content

Commit 902a180

Browse files
committed
IntFieldsIter combines field iteration and int parsing
1 parent 11a7fc6 commit 902a180

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

day04/day04.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,12 @@ func matches(s string) int {
4949
panic(fmt.Errorf("unexpected card: %q", card))
5050
}
5151
boolSet := [101]bool{}
52-
aoc2023.FieldsIter(winners, func(s string) {
53-
boolSet[aoc2023.Atoi(s)] = true
52+
aoc2023.IntFieldsIter(winners, func(v int) {
53+
boolSet[v] = true
5454
})
5555
var count int
56-
aoc2023.FieldsIter(plays, func(s string) {
57-
if boolSet[aoc2023.Atoi(s)] {
56+
aoc2023.IntFieldsIter(plays, func(v int) {
57+
if boolSet[v] {
5858
count++
5959
}
6060
})

utils.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,19 @@ func Atoi(s string) int {
3636
return i
3737
}
3838

39-
func FieldsIter(s string, fn func(s string)) {
39+
func IntFieldsIter(s string, fn func(i int)) {
4040
i := 0
4141
for {
4242
for ; i < len(s) && s[i] == ' '; i++ {
4343
}
4444
beg := i
45+
var v int
4546
for ; i < len(s) && s[i] != ' '; i++ {
47+
v = v*10 + int(s[i]-'0')
4648
}
4749
if beg == i {
4850
return
4951
}
50-
fn(s[beg:i])
52+
fn(v)
5153
}
5254
}

utils_test.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ import (
55
"testing"
66
)
77

8-
func TestFieldsIter(t *testing.T) {
9-
var ss []string
10-
join := func(s string) { ss = append(ss, s) }
11-
FieldsIter("0", join)
12-
if !slices.Equal(ss, []string{"0"}) {
8+
func TestIntFieldsIter(t *testing.T) {
9+
var ss []int
10+
join := func(v int) { ss = append(ss, v) }
11+
IntFieldsIter("0", join)
12+
if !slices.Equal(ss, []int{0}) {
1313
t.Error(ss)
1414
}
15-
FieldsIter(" 1 2 3 4 56 ", join)
16-
if !slices.Equal(ss, []string{"0", "1", "2", "3", "4", "56"}) {
15+
IntFieldsIter(" 1 2 3 4 56 ", join)
16+
if !slices.Equal(ss, []int{0, 1, 2, 3, 4, 56}) {
1717
t.Error(ss)
1818
}
1919
}

0 commit comments

Comments
 (0)