This commit is contained in:
2022-12-04 10:42:25 +01:00
parent aee2b49c64
commit 8b9a8e53ed
3 changed files with 90 additions and 0 deletions

48
day04/common/section.go Normal file
View File

@@ -0,0 +1,48 @@
package common
import (
"bufio"
"strconv"
"strings"
)
type Assignment struct {
start int
end int
}
func (assignment Assignment) Contains(other Assignment) bool {
return assignment.start <= other.start && assignment.end >= other.end
}
type AssignmentPair struct {
assignments [2]Assignment
}
func (pair AssignmentPair) OverlapsFully() bool {
return pair.assignments[0].Contains(pair.assignments[1]) || pair.assignments[1].Contains(pair.assignments[0])
}
func (pair AssignmentPair) Overlaps() bool {
return (pair.assignments[0].start >= pair.assignments[1].start && pair.assignments[0].start <= pair.assignments[1].end) ||
(pair.assignments[1].start >= pair.assignments[0].start && pair.assignments[1].start <= pair.assignments[0].end)
}
func Parse(scanner bufio.Scanner) []AssignmentPair {
pairs := []AssignmentPair{}
for scanner.Scan() {
line := scanner.Text()
splittedPair := strings.Split(line, ",")
currentAssignmentPair := AssignmentPair{}
for i := 0; i < 2; i++ {
splittedAssignment := strings.Split(splittedPair[i], "-")
start, _ := strconv.Atoi(splittedAssignment[0])
end, _ := strconv.Atoi(splittedAssignment[1])
currentAssignmentPair.assignments[i] = Assignment{start, end}
}
pairs = append(pairs, currentAssignmentPair)
}
return pairs
}

21
day04/ex1/main.go Normal file
View File

@@ -0,0 +1,21 @@
package main
import (
"bufio"
"fmt"
"os"
"aoc2022/day04/common"
)
func main() {
assignmentPairs := common.Parse(*bufio.NewScanner(os.Stdin))
sum := 0
for _, assignmentPair := range assignmentPairs {
if assignmentPair.OverlapsFully() {
sum++
}
}
fmt.Println(sum)
}

21
day04/ex2/main.go Normal file
View File

@@ -0,0 +1,21 @@
package main
import (
"bufio"
"fmt"
"os"
"aoc2022/day04/common"
)
func main() {
assignmentPairs := common.Parse(*bufio.NewScanner(os.Stdin))
sum := 0
for _, assignmentPair := range assignmentPairs {
if assignmentPair.Overlaps() {
sum++
}
}
fmt.Println(sum)
}