Skip to content

Commit f24f338

Browse files
committed
refac(angch/2024-07): optimize loop logic and early exit condition
1 parent 710feb4 commit f24f338

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

angch/2024-07/main.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ func day7(file string) (part1, part2 int) {
3333
for {
3434
start := n[0]
3535
ispart2 := false
36+
bad := len(ops) - 1
3637
for i := 1; i < len(n); i++ {
3738
if ops[i-1] == 0 {
3839
start += n[i]
@@ -45,32 +46,30 @@ func day7(file string) (part1, part2 int) {
4546
}
4647
start += n[i]
4748
}
49+
if start > testv {
50+
// Early exit
51+
bad = i - 1
52+
break
53+
}
4854
}
4955
if start == testv {
50-
// log.Println(ops, start, testv, part1)
51-
5256
if ispart2 {
5357
part2 += testv
5458
} else {
5559
part1 += testv
5660
}
57-
5861
break a
5962
}
6063

61-
again := false
62-
for i := 0; i < len(ops); i++ {
64+
for i := bad; i >= 0; i-- {
6365
ops[i]++
6466
if ops[i] == 3 {
6567
ops[i] = 0
6668
} else {
67-
again = true
68-
break
69+
continue a
6970
}
7071
}
71-
if !again {
72-
break
73-
}
72+
break
7473
}
7574

7675
// log.Println(testv, n)

0 commit comments

Comments
 (0)