57 lines
1.1 KiB
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)
|
|
} |