]> fbox.kageds.com Git - adventofcode.git/blob - 2022/go/day04/day04.go
Day_1
[adventofcode.git] / 2022 / go / day04 / day04.go
1 package day04
2
3 import (
4 "strings"
5 "strconv"
6 // "fmt"
7
8 mapset "github.com/deckarep/golang-set/v2"
9
10 )
11
12 func Part1(input string) int {
13 var count int = 0
14 lines := strings.Split(input, "\n")
15 for _, line := range lines {
16 pairs := strings.Split(line, ",")
17
18 pair1 := strings.Split(pairs[0], "-")
19 pair2 := strings.Split(pairs[1], "-")
20
21 p1set := mapset.NewSet[int](Range(pair1[0], pair1[1])...)
22 p2set := mapset.NewSet[int](Range(pair2[0], pair2[1])...)
23
24 if p1set.IsSubset(p2set) || p2set.IsSubset(p1set) {
25 count++
26 }
27 }
28 return count
29 }
30
31 func Part2(input string) int {
32 var count int = 0
33 lines := strings.Split(input, "\n")
34 for _, line := range lines {
35 pairs := strings.Split(line, ",")
36
37 pair1 := strings.Split(pairs[0], "-")
38 pair2 := strings.Split(pairs[1], "-")
39
40 p1set := mapset.NewSet[int](Range(pair1[0], pair1[1])...)
41 p2set := mapset.NewSet[int](Range(pair2[0], pair2[1])...)
42
43 if len(p1set.Intersect(p2set).ToSlice()) > 0 {
44 count++
45 }
46 }
47 return count
48 }
49
50 func Range(start string, end string)[]int {
51 s, _ := strconv.Atoi(start)
52 e, _ := strconv.Atoi(end)
53
54 var r []int
55 for i := s; i <= e; i++ {
56 r = append(r, i)
57 }
58 return r
59 }