@@ -17,27 +17,48 @@ func main() {
17
17
func p1 (lines []string ) int {
18
18
var fullyCovered int
19
19
for _ , line := range lines {
20
- pair := strings .Split (line , "," )
21
- left := strings .Split (pair [0 ], "-" )
22
- right := strings .Split (pair [1 ], "-" )
23
- leftStart , _ := strconv .Atoi (left [0 ])
24
- leftStop , _ := strconv .Atoi (left [1 ])
25
- rightStart , _ := strconv .Atoi (right [0 ])
26
- rightStop , _ := strconv .Atoi (right [1 ])
27
-
28
- if leftStart >= rightStart && leftStop <= rightStop {
29
- fullyCovered ++
30
- continue
31
- }
20
+ pair := lineToPair (line )
32
21
33
- if leftStart <= rightStart && leftStop >= rightStop {
22
+ if fullyCovers ( pair ) {
34
23
fullyCovered ++
35
24
continue
36
25
}
37
26
}
38
27
return fullyCovered
39
28
}
40
29
30
+ func fullyCovers (pair Pair ) bool {
31
+ if pair .left .start >= pair .right .start && pair .left .stop <= pair .right .stop {
32
+ return true
33
+ }
34
+ if pair .left .start <= pair .right .start && pair .left .stop >= pair .right .stop {
35
+ return true
36
+ }
37
+ return false
38
+ }
39
+
40
+ func lineToPair (line string ) Pair {
41
+ p := strings .Split (line , "," )
42
+ left := strings .Split (p [0 ], "-" )
43
+ right := strings .Split (p [1 ], "-" )
44
+
45
+ leftStart , _ := strconv .Atoi (left [0 ])
46
+ leftStop , _ := strconv .Atoi (left [1 ])
47
+ rightStart , _ := strconv .Atoi (right [0 ])
48
+ rightStop , _ := strconv .Atoi (right [1 ])
49
+
50
+ return Pair {
51
+ left : Assignment {
52
+ start : leftStart ,
53
+ stop : leftStop ,
54
+ },
55
+ right : Assignment {
56
+ start : rightStart ,
57
+ stop : rightStop ,
58
+ },
59
+ }
60
+ }
61
+
41
62
func p2 (input []string ) int {
42
63
return 0
43
64
}
0 commit comments