Skip to content

Commit b13d9ea

Browse files
committed
feat(angch/2025-05): Initial
1 parent b91aade commit b13d9ea

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed

angch/2025-05/main.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package main
2+
3+
import (
4+
"bufio"
5+
"fmt"
6+
"log"
7+
"os"
8+
"strconv"
9+
"strings"
10+
"time"
11+
12+
"github.com/angch/adventofcode/angch/span"
13+
)
14+
15+
func day5(file string) (part1, part2 int) {
16+
f, err := os.Open(file)
17+
if err != nil {
18+
log.Fatal(err)
19+
}
20+
defer f.Close()
21+
scanner := bufio.NewScanner(f)
22+
23+
spans := [][2]int{}
24+
for scanner.Scan() {
25+
t := scanner.Text()
26+
_ = t
27+
if t == "" {
28+
break
29+
}
30+
l_, r_, ok := strings.Cut(t, "-")
31+
_ = ok
32+
l, _ := strconv.Atoi(l_)
33+
r, _ := strconv.Atoi(r_)
34+
spans = append(spans, [2]int{l, r})
35+
}
36+
// log.Println(spans)
37+
38+
for scanner.Scan() {
39+
t := scanner.Text()
40+
_ = t
41+
i, _ := strconv.Atoi(t)
42+
for _, v := range spans {
43+
if i >= v[0] && i <= v[1] {
44+
part1++
45+
break
46+
}
47+
}
48+
}
49+
50+
s2 := span.NewSpans[bool]()
51+
for _, v := range spans {
52+
s2 = s2.AddCompress(v[0], v[1], true)
53+
log.Printf("%+v\n", s2)
54+
}
55+
for _, v := range s2 {
56+
part2 += v.To - v.From + 1
57+
}
58+
59+
return
60+
}
61+
62+
func main() {
63+
log.SetFlags(log.Lshortfile | log.LstdFlags)
64+
t1 := time.Now()
65+
part1, part2 := day5("test.txt")
66+
fmt.Println(part1, part2)
67+
if part1 != 3 || part2 != 14 {
68+
log.Fatal("Test failed ", part1, part2)
69+
}
70+
71+
part1, part2 = day5("input.txt")
72+
fmt.Println(part1, part2)
73+
fmt.Println("Elapsed time:", time.Since(t1))
74+
}

angch/2025-05/test.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
3-5
2+
10-14
3+
16-20
4+
12-18
5+
6+
1
7+
5
8+
8
9+
11
10+
17
11+
32

0 commit comments

Comments
 (0)