Skip to content

Commit 15eb8c2

Browse files
committed
refac(angch/2024-07): optimize number parsing and multiplication logic in day7 function
1 parent 87189c3 commit 15eb8c2

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

angch/2024-07/main.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,16 @@ func day7(file string) (part1, part2 int) {
2323
l, r, _ := strings.Cut(t, ": ")
2424
testv, _ := strconv.Atoi(l)
2525
rs := strings.Split(r, " ")
26-
n := make([]int, 0, len(rs))
27-
for _, v := range rs {
28-
nums, _ := strconv.Atoi(v)
29-
n = append(n, nums)
26+
n := make([]int, len(rs))
27+
mult10 := make([]int, len(rs)) // Faster if we precalc 10^x
28+
for i, v := range rs {
29+
num, _ := strconv.Atoi(v)
30+
n[i] = num
31+
m := 1
32+
for range len(v) {
33+
m *= 10
34+
}
35+
mult10[i] = m
3036
}
3137
ops := make([]int, len(n)-1)
3238
prevvalues := make([]int, len(n))
@@ -42,11 +48,7 @@ func day7(file string) (part1, part2 int) {
4248
} else if ops[i-1] == 1 {
4349
start *= n[i]
4450
} else {
45-
// ispart2 = true
46-
for range len(rs[i]) {
47-
start *= 10
48-
}
49-
start += n[i]
51+
start = start*mult10[i] + n[i]
5052
}
5153
prevvalues[i] = start
5254
if start > testv {

0 commit comments

Comments
 (0)