Day4
This commit is contained in:
parent
35c13300cc
commit
615f33798f
42
day4/day4.go
Normal file
42
day4/day4.go
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"AOC2022/helper"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
args := os.Args[1:]
|
||||||
|
lines := helper.ReadTextFile(args[0])
|
||||||
|
sum1 := 0
|
||||||
|
sum2 := 0
|
||||||
|
for _, line := range lines {
|
||||||
|
orders := getOrders(line)
|
||||||
|
if orders[0] <= orders[2] && orders[1] >= orders[3] {
|
||||||
|
sum1++
|
||||||
|
} else if orders[2] <= orders[0] && orders[3] >= orders[1] {
|
||||||
|
sum1++
|
||||||
|
|
||||||
|
}
|
||||||
|
if !(orders[2] > orders[1] || orders[3] < orders[0]) {
|
||||||
|
sum2++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println(sum1)
|
||||||
|
fmt.Println(sum2)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getOrders(line string) (orders [4]int) {
|
||||||
|
orderparts := strings.FieldsFunc(line, split)
|
||||||
|
for i, part := range orderparts {
|
||||||
|
orders[i] = helper.RemoveError(strconv.Atoi(part))
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func split(r rune) bool {
|
||||||
|
return r == '-' || r == ','
|
||||||
|
}
|
1000
day4/input
Normal file
1000
day4/input
Normal file
File diff suppressed because it is too large
Load Diff
6
day4/testInput
Normal file
6
day4/testInput
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
2-4,6-8
|
||||||
|
2-3,4-5
|
||||||
|
5-7,7-9
|
||||||
|
2-8,3-7
|
||||||
|
6-6,4-6
|
||||||
|
2-6,4-8
|
@ -22,6 +22,25 @@ func ReadTextFile(filePath string) []string {
|
|||||||
return strings.Split(string(file), "\r\n")
|
return strings.Split(string(file), "\r\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func FindRepeatedItems[T int | int64](itemgroup1, itemgroup2 []T) []T {
|
||||||
|
elementsCompartment1 := map[T]bool{}
|
||||||
|
repeatedElemnts := map[T]bool{}
|
||||||
|
for _, item := range itemgroup1 {
|
||||||
|
elementsCompartment1[item] = true
|
||||||
|
}
|
||||||
|
for _, item := range itemgroup2 {
|
||||||
|
if elementsCompartment1[item] {
|
||||||
|
repeatedElemnts[item] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
v := make([]T, 0, len(repeatedElemnts))
|
||||||
|
for key, _ := range repeatedElemnts {
|
||||||
|
v = append(v, key)
|
||||||
|
}
|
||||||
|
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
func FindMax[T int | int64](slice []T) (m T) {
|
func FindMax[T int | int64](slice []T) (m T) {
|
||||||
for i, e := range slice {
|
for i, e := range slice {
|
||||||
if i == 0 || e > m {
|
if i == 0 || e > m {
|
||||||
|
Loading…
Reference in New Issue
Block a user