aoc22/go/4/main.go

57 lines
1.1 KiB
Go

package main
import (
"bufio"
"os"
"path/filepath"
"strconv"
"strings"
)
var (
f = "../../4.input.txt"
)
func must(e error) {
if e != nil {
panic(e)
}
}
func conv(s string) int {
i, err := strconv.Atoi(s)
must(err)
return i
}
func main() {
fp, err := filepath.Abs(f)
must(err)
rf, err := os.Open(fp)
must(err)
s := bufio.NewScanner(rf)
s.Split(bufio.ScanLines)
split := strings.Split
containCount := 0
overlapCount := 0
for s.Scan() {
l := s.Text()
p := split(l, ",")
ids1 := split(p[0], "-")
ids2 := split(p[1], "-")
id1 := []int{conv(ids1[0]), conv(ids1[1])}
id2 := []int{conv(ids2[0]), conv(ids2[1])}
if id1[0] <= id2 [0] && id1[1] >= id2[1] ||
id1[0] >= id2 [0] && id1[1] <= id2[1] {
containCount = containCount + 1
}
if id1[0] <= id2[1] && id1[1] >= id2[0] {
overlapCount = overlapCount + 1
}
}
println("contains count:", containCount)
println("overlaps count:", overlapCount)
}