From fb57a80ae32e70d31d2f6f68fb2b82c92ae34857 Mon Sep 17 00:00:00 2001 From: Karl Spickermann Date: Sat, 3 Dec 2022 03:40:46 +0100 Subject: [PATCH] Day 1 & Day 2 --- .idea/.gitignore | 8 + .idea/AOC2022.iml | 9 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + day1 | 1 + day2/day2.go | 60 ++ day2/input | 2500 +++++++++++++++++++++++++++++++++++++++++++++ day2/testInput | 3 + go.mod | 3 + helper/helper.go | 39 + 10 files changed, 2637 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/AOC2022.iml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 160000 day1 create mode 100644 day2/day2.go create mode 100644 day2/input create mode 100644 day2/testInput create mode 100644 go.mod create mode 100644 helper/helper.go diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/AOC2022.iml b/.idea/AOC2022.iml new file mode 100644 index 0000000..5e764c4 --- /dev/null +++ b/.idea/AOC2022.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..83f2e59 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..3b8108d --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/day1 b/day1 new file mode 160000 index 0000000..19acbd7 --- /dev/null +++ b/day1 @@ -0,0 +1 @@ +Subproject commit 19acbd7f9a47614490ff9edf6f5ea6ee44a5f3d2 diff --git a/day2/day2.go b/day2/day2.go new file mode 100644 index 0000000..b40ee7d --- /dev/null +++ b/day2/day2.go @@ -0,0 +1,60 @@ +package main + +import ( + "AOC2022/helper" + "fmt" + "os" +) + +func main() { + args := os.Args[1:] + rounds := helper.ReadTextFile(args[0]) + sum := 0 + for _, round := range rounds { + sum += roundResult(int(round[0])-64, int(round[2])-87) + } + fmt.Println(sum) + sum = 0 + for _, round := range rounds { + opponent := int(round[0]) - 64 + neededResult := int(round[2]) - 87 + move := generateCorrectMove(opponent, neededResult) + sum += roundResult(opponent, move) + } + fmt.Println(sum) +} + +func roundResult(opponent, player int) int { + weakness := getWeakness(opponent) + if player == weakness { + return player + 6 + } + if opponent == player { + return player + 3 + } + return player + 0 +} + +func getWeakness(input int) int { + tmpWeakness := (input + 1) % 4 + if tmpWeakness == 0 { + return 1 + } + return tmpWeakness +} + +func generateCorrectMove(opponent, neededResult int) int { + weakness := getWeakness(opponent) + if neededResult == 3 { + return weakness + } + if neededResult == 1 { + possibleMove := []int{1, 2, 3} + for _, x := range possibleMove { + if x != weakness && x != opponent { + return x + } + } + } + return opponent +} diff --git a/day2/input b/day2/input new file mode 100644 index 0000000..f55d458 --- /dev/null +++ b/day2/input @@ -0,0 +1,2500 @@ +C X +C X +C X +A Z +C X +C X +A Y +B X +B Y +B Z +C Y +C X +C X +C Y +B Y +C X +C Y +B Z +C Y +B Z +B Z +A Z +C X +C X +C X +B Z +C Y +C X +C X +B Y +C X +B Z +C X +C X +A Y +C X +A Z +B Z +B Z +B Z +B Y +B Z +C X +B Y +C Y +C Y +B Z +C X +C Y +C X +C X +C X +C Y +A X +A X +C Z +C X +B Z +A Z +C X +B Y +C Y +B X +B Z +C Z +A X +C X +B X +C Y +C Y +B Z +B Z +B Z +C Z +A Z +A Z +C X +C X +C Z +B Z +B Y +C X +A Z +C X +B Y +C Y +B Z +C X +A Y +C Y +A X +B Z +C Y +C Y +C X +C Y +C X +B X +C Y +C X +B Y +A Z +B X +B Y +C Z +C X +C X +C X +B Z +B X +B Z +C X +B Y +B Z +C X +C Y +B Y +C Y +C X +B Z +B Y +B X +A Z +A Z +C X +C X +B Z +B Y +C X +C Y +C Y +A X +C X +C Y +A Y +C X +A Z +C Y +B X +B X +B X +B Y +B Y +C Z +C X +A Y +A Z +C X +B Z +C Y +C Y +A Y +B Z +B Z +C X +C Y +B X +C Y +B X +A Y +C X +B Z +A Z +C Y +A Z +A Y +C Z +B Y +A Z +A Y +C X +B Y +B X +C X +A Y +B Z +B Z +B Y +B Z +C X +C Z +B Y +B Y +A Y +B Z +B X +B Z +A X +C Y +B Z +A X +A X +B Y +C Z +C Z +B Z +B X +B X +A Z +A Y +A Y +C Z +C X +C X +C X +B Z +C Y +C Y +C Y +B X +B Y +A Y +B Z +B X +B Z +C X +B X +C X +C X +B Z +C Z +C Y +C X +C X +B Z +A Y +C X +C X +A Z +B Y +B X +B Y +B Z +C Y +A X +B Y +C X +A Z +B Z +A Y +C X +B Y +B Z +A Z +B Z +C Y +B Z +A X +A Y +B X +A X +B Y +C X +A X +B X +A X +A Z +B Z +C X +C X +A Y +B Z +C X +A Z +B Z +C X +C X +A Z +C Y +B Z +C X +B Y +B Y +A Z +C X +B Z +B Y +A Z +B Y +C X +C Y +A Y +B Y +C Z +A Y +C Z +A Z +B Z +C X +A X +B Z +C X +C Y +A X +C X +A Z +C Z +C X +C Z +B Z +C Y +B Y +B Z +C X +C X +B Y +C X +B Z +C Y +A X +A Z +B X +A Z +C Z +C Y +C Y +B Z +C Y +C X +C Y +B Y +C X +C X +C X +B Z +C X +C X +B Y +C Y +A Z +B Z +C Z +B Z +A Y +B Z +C X +C Z +B X +A Z +C X +C X +C Y +B Z +C Z +B Z +A Y +B Z +C Z +B Z +A Z +C X +A Z +A X +C X +B X +C X +C X +C Y +C X +C X +B Z +C X +A Z +B Z +B Y +C X +A Y +C Y +B Z +B Z +C X +A X +C X +B Z +C X +B X +B X +B Y +B Z +B X +B Y +C X +C X +B Y +C X +C X +A X +B Y +A Y +B Z +B Z +A X +C X +C X +C X +A Z +C X +B Y +A Z +A Y +B Z +B Y +B Z +C X +A Y +C X +C X +B Y +A X +A X +B X +C Y +C X +C X +B Y +B X +B Z +C Y +B X +C X +B Z +B Z +B Z +C X +C Z +A X +C X +C Z +A Y +B X +C Y +C Y +B Z +B Z +C Y +C X +A Z +A Z +C X +C Z +C X +C X +C X +C Y +B Z +B Y +B Z +C Y +A Y +A Z +C Y +C Z +C Z +B Z +B X +C X +C X +C X +B Y +C X +C X +C Z +A Z +C X +B X +B X +C X +C X +C X +C Y +B Z +B X +C Y +C X +B Y +A Y +A Z +C X +C Y +A Y +B Z +C X +B X +C X +C X +B X +B Z +B Y +C X +C Y +A Y +C X +C X +B Z +C Y +B Z +C Y +B Y +C Y +B Z +B Y +B Z +B Z +C X +B Z +A X +C Y +C X +C X +C X +C X +C Z +B Z +C X +C Y +C Z +C X +C Y +B Z +B Z +A Z +B X +A Z +B Y +A Y +C X +C X +C X +C X +C X +C X +A X +C X +C Y +B Z +C Y +C Y +C Y +B Y +C X +B Z +B Z +A X +C Z +C Z +B Y +B Z +C X +A X +C Z +B Z +B Z +C Z +B X +C X +B Z +A Z +B Z +C X +A X +B Y +B X +B Y +B Z +B Z +C Y +B X +B Y +C X +B Z +B Z +B Y +B Z +A Y +A X +C Z +C Y +B Z +B Z +A Y +A X +B Y +C X +B X +A Y +B Y +A Z +A X +B Y +B Z +A Z +C X +C X +C Y +C Y +B Y +C X +A Z +B Z +A X +C X +C X +B X +C Z +B Y +C Z +C Y +C X +B X +C Y +C Z +C X +B Z +C Y +C Y +B X +B Y +C X +B X +B X +A X +A Z +A X +A Y +C Z +B Z +C Y +C X +B X +A X +C Y +C X +C X +B X +B Y +A X +B Y +A Z +C X +B Z +C Y +B Z +B Z +B Z +C X +B Z +B X +C Y +C Y +C Y +B Z +B X +C Y +C Z +A Z +C Y +B Z +B X +B Z +B Y +A X +B Y +B Y +A Z +A X +B Z +C X +C Y +C X +C X +C X +A X +A Z +C Y +B Z +B X +C Z +C Y +C X +A X +C X +B X +C X +A X +B Y +C Y +B Z +C X +B Z +A Y +C X +C Y +A Z +B Z +B Z +C X +A Z +A X +C Y +C Y +A Z +C X +C Z +C Y +C X +C X +A Y +C X +C Y +A Y +C Y +C X +C Z +C X +A Y +C X +B Z +C X +C X +C X +B Y +A Y +A Y +C X +C X +B Z +B Z +C X +B Z +C X +A Y +B Y +C Y +B Z +C X +A X +C X +C X +C X +B X +B Y +A X +A X +B Z +C X +B Z +C X +C X +A Y +A Z +B Z +C X +B Z +B X +C X +B Y +B Z +B Z +C X +B Z +B Z +B Z +C X +B Y +B Z +A Z +C X +C X +B Z +A Y +B Y +C X +B Z +B Z +A Y +B X +B X +A X +A X +B Y +C X +A Z +B Y +B X +C X +B Z +B Y +A Z +C X +C X +B Z +C Y +B Z +C X +C Y +C X +C Z +C X +B Z +B Z +B Z +C X +C X +C X +B Z +C Y +B Y +B Z +C Z +C X +B Y +C X +A X +C Z +C X +C X +B Z +A Z +C X +C Y +C X +B Y +C Y +B X +C Z +C X +C Z +C X +B Z +B Y +B Y +A Z +B Y +C X +A X +C X +C Y +B Z +C X +C Z +C Z +B Y +C Y +B Z +C Y +C Y +C X +C X +A Y +B Y +B Y +C Y +B X +B Z +C X +C X +C Y +C X +B X +B Y +A Z +B Z +B Z +C X +C X +B Y +C X +B X +B Z +B Y +B Y +B Z +B Z +A Y +B Y +B Y +B X +A Y +C X +C Y +A Z +B Z +C X +B Y +C X +A Z +B Y +C X +C X +B Y +B Y +C Y +C X +B Y +C X +C X +B Z +C X +C X +C Y +B Z +C Y +C Y +A Z +C Y +B Y +C X +C Z +A X +C X +B Y +B Z +C Y +A Z +B Y +C Y +C Z +B Y +B Y +C X +C Z +B Z +C Z +C X +C X +C X +B Y +B Y +B Y +A Z +B Y +B Y +B Z +A Y +B Z +C X +C Z +B Z +C Z +B Y +B Z +C X +C X +C Y +C X +B Y +A Z +C Z +B Z +C X +B Y +A X +C X +A X +A Z +C X +B Y +B Z +B Z +A Z +C Z +C Y +C X +C Z +B X +C Y +C Z +B X +B X +A X +A Z +B Z +A Z +A X +C X +C X +A X +B Z +C Z +C Z +A X +B X +C X +B Z +B Y +A Z +A X +B Y +B Z +C X +B X +B Y +C X +C X +B Z +C Z +C X +C X +B Z +C X +B Z +C Y +C Y +C Y +B Z +C X +A X +B Y +B Y +A Y +C X +C X +C X +B Y +A Z +C X +C Y +C X +C X +B X +B Z +C X +C Z +A Z +B Z +C X +A Z +B Z +A X +C X +C Y +B Z +B X +B Y +B Z +C X +C X +C X +C X +B Y +C X +B Y +C X +C Y +B Z +C Y +C X +A X +C Z +C Y +A X +C X +B Z +B Y +B Y +C Y +C X +C Y +C X +B Z +B Z +C Y +B Z +B Z +B Z +B Z +C X +B Z +C X +A Z +B Z +B Y +A X +B Z +C Y +B Y +C Z +C X +A X +C X +A Y +B Z +B Y +B Z +C X +C Y +A Y +C X +C X +B Z +B Z +A Z +C X +A Z +C X +A X +B Y +C X +A Z +B Z +B Z +C X +C X +C Z +B Z +C X +A X +B X +B Y +C X +C X +C X +C Y +B Z +C Y +C X +C X +B Y +C X +A Z +A Z +C Y +B Y +B X +B Z +B Y +C Y +C Y +C X +A Z +B Z +B X +C X +C X +A X +C Z +A Y +C X +C Y +A Z +C Z +B Z +B Z +C X +B X +A Z +B Y +C X +A Z +C X +C Y +B Y +B Y +B X +B Z +C Y +B X +C X +B Y +C X +B Y +C X +B Y +A Y +A Z +C Y +A X +C X +C Z +B X +C Z +C Y +C Y +C X +C X +C X +C Y +C Z +A Z +B Z +C X +A X +A Z +B Y +C X +C X +C Z +C X +B Z +C X +B Y +B Z +B Y +C X +C Y +B Z +C Y +A X +C X +A Z +B Y +B Z +C X +B Z +C X +C Z +B Y +A X +C X +C X +C X +C X +B X +B Z +A Y +B Y +C X +B Z +C Z +C Y +A Z +C Y +A Y +B Z +C X +B Z +B Y +C Y +C Y +C Y +B Z +B Z +C X +C Z +C Z +B Y +B Y +C Z +B Y +C X +C Y +B Z +A Z +C Y +A Y +A X +B Z +B Y +C X +B Z +C X +A Z +C X +B Z +A X +C Y +C X +A Z +B Z +C Y +A Z +C Z +C X +A Y +B Z +C X +C X +B Y +A X +C Y +C X +C X +C Z +C X +A Y +C X +C X +A Y +B Z +B X +C X +B Z +C Z +C X +C Y +C Y +C X +B Z +A Y +C Y +C Y +B X +C X +B Z +B Y +B X +C X +C Z +B Z +B Z +B Z +C X +B Z +A Z +C X +C Y +C X +C Z +A Y +C Y +C Y +B Z +B Z +A Z +C Y +C Y +C X +B X +C X +C X +B X +C Z +A Z +A Y +C X +A Y +B Y +A X +C X +C X +B Z +B Y +C X +A Y +B Z +C Y +C X +C X +C X +B Z +B Y +B Y +C Z +B X +C X +C Z +C Z +C X +C X +C Z +C Z +B Z +C X +B Z +B Z +A X +A Z +B Y +B Y +A Y +A Z +B Z +C X +C Y +C X +A X +C X +A Y +A Z +A X +C Z +B Y +B Y +B X +C Z +B Y +C Y +B Y +C X +C Y +B X +A Y +C X +C X +B Z +C Z +A Z +C X +C Z +C X +A Z +B Z +B Y +C X +C X +B Y +B Y +C X +C Y +C Y +B Z +A Y +A Z +A Z +C Y +C X +C X +C X +C X +A X +A Z +A Z +B Y +B X +C Z +C Y +B Y +B Z +C X +B Y +B Z +B X +A Y +C Y +B Z +B X +C X +B Z +C Y +A X +C Z +C X +C Y +B Y +C X +C Y +C X +C X +B Y +B Y +B Z +C X +B Z +A X +C Y +B Y +C X +C X +B Z +B Y +B Y +C X +C Y +B Y +C Y +C X +C X +A Z +C Z +C Y +B X +B Z +B Z +B Z +A Y +B Y +C X +B Y +B X +C X +C X +A Y +C Z +A X +B Z +C X +C X +B Z +A Z +A Z +B Z +C X +C Y +A Z +B Z +C Z +C Z +C X +C X +C Y +C X +C X +B Z +A X +C Y +C Y +B Z +C Y +B Y +C Y +C X +C Y +B Y +C X +C Z +C X +C Z +C Y +C X +C X +A Z +B Y +C X +C X +B Z +C Z +B Z +C X +C X +C Z +C X +C X +B X +C X +B Z +B X +B Z +B Z +B Z +C X +B Y +B Z +C Y +C X +B Z +B Z +A Z +C X +B Z +A Z +B Z +B Z +B Z +C X +C X +C Y +C X +C X +B Z +B Y +B X +B X +C X +C X +B Z +B Y +C X +C X +B Z +C X +A Y +C X +C X +C X +B Z +C Y +C Y +B Y +B Y +B Y +A Y +B X +B Z +B Y +A Z +B X +C X +B Z +B Z +C Y +B Z +A X +B Z +C Y +A X +B X +A Z +B Y +B Z +C X +B Y +C X +B Z +B Z +A Z +B Y +C Y +C Y +C X +C Z +B Z +C X +C Y +A Z +B X +C X +A Z +C Y +C X +C Y +C X +B Z +B Z +C X +B Y +B Z +C X +C X +B Y +A Y +C X +C Z +C X +C X +C Y +C X +C X +C X +B Z +C X +B Y +C X +C Y +C X +C Y +A Z +B Z +A Z +C Y +C X +C X +B Y +A Z +C X +B X +C X +C Z +A Z +B Z +B Z +C Y +C Y +B Z +C X +C Z +A X +C X +B Y +B Z +B Y +B Y +C Z +A X +C Z +A X +B Z +B X +C X +B Z +B Z +A X +B Y +B Z +A X +C X +B Z +B Y +C X +C X +B Y +C Y +A Y +C Y +B X +B X +C X +C X +C Y +B Z +B Y +B Z +C X +B Y +B Y +B Z +B Y +B Y +C Y +C Z +C X +B Z +C X +B X +A Z +C X +C X +A Y +C Z +B X +C Y +B Y +C Z +B Z +C X +B Z +C X +C X +C Y +C Y +B Z +C X +C Z +C X +B Z +B Z +C X +B Z +C Y +C X +C X +A X +C X +B X +A Y +C Z +C Y +B Y +B X +C X +C Z +B Z +C Y +C Z +C X +C X +B X +A Z +B Y +C Z +A X +C X +C X +A Y +C Z +B X +B Z +C X +B Z +C Y +C Z +B Y +B X +C X +A Y +A X +C X +C X +B Z +C X +C X +C X +B Z +C X +A Z +B Y +C Z +C X +A Z +C X +C Z +B Z +B X +B X +B Y +C Y +A X +A X +A Z +C Z +C Y +A X +C X +A Z +B X +B Z +C X +B Y +B Y +B X +B X +B Y +B Y +B Z +C X +C Z +C Y +B Y +B Z +A Y +A Y +C X +B Z +C X +C X +B X +C X +B Z +B X +C Y +C X +C X +B Z +C Y +B X +A Z +C Y +C Y +C X +C X +B X +B Y +C X +B Z +C Y +B Y +B Z +A Z +C X +B Z +C X +B Z +C X +C X +C X +A Y +B X +A Z +C Y +C Z +B Y +B Y +A Y +B Y +B Z +B X +C X +B Y +B Y +B Z +A X +C Y +B Z +C Y +A Y +C X +B Z +A Z +B Z +B Y +B Y +B Y +B Z +B X +B Z +A Y +C Y +B Y +C X +C Y +B Y +B Z +C Y +C X +B Y +B Z +B Y +C Y +B Y +A X +C X +C X +B Z +B Z +B Y +B X +A X +B Y +A Z +A X +C Z +B Z +C X +C X +A Z +B Z +B Z +A Z +B Y +C X +C X +B X +C X +C Y +C X +B Z +A X +C X +B Y +C Z +A Y +B Z +C Y +A Y +B Y +B Y +B Z +B Z +C X +B Z +A X +C X +B Z +C X +C X +C X +A X +B X +A Z +B Z +A X +B X +C X +B Z +A Z +B Z +A Z +C X +C X +C X +C Y +B X +B Z +B Z +B Y +A Y +C Z +A X +B Y +C Y +B Z +B Z +B Z +B Z +C Y +B Y +B Z +B Z +C X +A Z +B Y +A Y +B Y +C Z +B X +C Y +B Z +C Y +C X +B Y +B Z +C Z +A Z +C Y +B Z +A X +C X +B Y +B Z +B X +C X +B Z +C Y +C X +C Z +B Y +C X +B Y +B Y +A X +C X +B Y +B X +C Z +C X +B Z +B Y +C Y +B Z +C Y +C Y +C Z +B Z +C Z +A Y +B X +B Z +C X +B Z +B X +B X +C Z +C Y +C Z +C X +B Y +C X +A X +B Y +B Y +C Y +C X +A Z +B Z +B Z +A Y +B Z +A X +C X +A Z +C X +B Y +C X +C X +A Y +A Z +B Z +A X +A X +B X +C X +C Z +B Y +A Y +B Y +A Z +B Z +A Y +B Z +C X +B Z +C X +C X +A Y +C X +C X +B Y +A Z +B Y +B Z +B Z +B Z +B Z +B Y +B Z +B Z +C X +B Z +C X +C Y +C Y +B Y +C Y +C X +A Z +B Y +A Z +B Y +C X +B Y +B X +B Z +B Y +B Y +B Z +C Z +B Z +B X +C X +B Z +C X +C X +A X +C X +B Y +B X +C Y +C Y +C Z +B Z +A Z +C X +B Z +B X +A Z +C X +C Y +C X +C X +A X +B Z +B Z +A Y +C X +B Y +B X +A Y +B Y +C X +C Y +C X +B Y +B Z +C X +B Y +C X +C X +C X +C Y +B Z +B Z +A Y +B Y +A Z +B Z +C X +B X +A Y +C Y +C Z +A Z +C Y +C X +B X +A Z +A Z +B Y +C X +B Z +B Z +C Y +B Z +B Z +C X +B Z +C X +A Z +C Y +B X +C Y +A X +B Y +B Z +A X +C Y +C X +C Y +C X +B Z +C X +C X +A Y +B Z +B Y +B Z +C Y +A Z +B Z +C X +B Y +C X +C X +C Y +C Z +B Z +B X +C X +C X +B Y +C X +C Y +A X +C Y +C X +C X +A Y +B Y +B Y +A X +C Y +B Z +B Z +C Z +B Z +B X +B Y +B X +B X +C X +C Y +A Z +C Z +C Y +B Z +B Y +A Y +C X +B Z +A X +C Y +A Z +C X +B Y +C Y +A X +A Z +A Z +B X +B Y +B Y +C X +B X +B Z +B Z +B Y +B X +B X +C Y +C Y +B Y +C Y +C X +B Y +B X +A Z +C Z +C X +B X +B Y +C Y +C Y +A X +C X +A Z +C X +A Y +B Y +C Y +A Z +B Y +B Y +A X +B Z +B Y +B X +A Y +B Z +C Z +C X +A Z +C Y +A X +A Z +C X +C Y +B Z +C X +B X +C Y +C X +B Z +C X +C X +B Y +B Y +C X +C X +B Y +C X +C Y +B Y +B X +C X +B Y +C Y +A Y +B Y +B Y +B Z +B Y +B X +A Y +C Y +C X +C Z +A Z +C X +A Z +C X +A Y +B Z +C Z +C Y +B Z +B Z +A Z +A X +C X +C Y +C X +C Z +B Z +A X +A Y +B Z +B Z +A X +C X +C Y +B X +C X +C Z +A X +B Y +A X +C Z +B Z +C X +C X +C X +B X +C Y +B Z +A X +B Z +A X +C Y +C X +A Y +C X +A Z +B Y +C X +C Y +B Z +C X +B Y +B Z +B Y +B Y +C X +C X +B Y +C X +C Y +C X +C Y +A Z +C X +C Y +B X +A Z +B Y +C X +C X +C Z +B Z +B Z +B X +C Z +B Z +B Z +C X +C X +C X +B X +B Z +B Z +C X +C X +C X +A X +C X +C Y +A Y +B X +A X +A Z +A Y +C X +B X +C Y +C X +C Y +C X +A X +B Z +A X +A X +B Z +C X +B Y +C X +B Y +B Z +C X +C Y +C Z +C X +C X +C X +C X +B Y +C Z +A Z +B Z +B Z +C X +C Z +B X +B Z +A Z +B Z +C Z +C X +C Y +B X +C Y +C Y +C X +B X +B X +C Y +C X +B Y +C Y +C X +B Z +B Z +A Y +A Z +C X +B Z +C X +A Z +B Z +C X +C X +C X +B Z +C X +B Y +B Z +A X +B Y +B Z +B X +C Y +A Z +B Z +C Y +C Y +C X +B Z +C X +C X +C X +C Y +A Z +C Z +B X +B Y +B Y +B Z +C Y +B Z +B Z +C Y +C X +B X +C Y \ No newline at end of file diff --git a/day2/testInput b/day2/testInput new file mode 100644 index 0000000..25097e8 --- /dev/null +++ b/day2/testInput @@ -0,0 +1,3 @@ +A Y +B X +C Z \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..afb26d8 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module AOC2022 + +go 1.18 diff --git a/helper/helper.go b/helper/helper.go new file mode 100644 index 0000000..cff3d09 --- /dev/null +++ b/helper/helper.go @@ -0,0 +1,39 @@ +package helper + +import ( + "os" + "strings" +) + +func check(e error) { + if e != nil { + panic(e) + } +} + +func RemoveError[T any](value T, e error) T { + check(e) + return value +} + +func ReadTextFile(filePath string) []string { + file, err := os.ReadFile(filePath) + check(err) + return strings.Split(string(file), "\r\n") +} + +func FindMax[T int | int64](slice []T) (m T) { + for i, e := range slice { + if i == 0 || e > m { + m = e + } + } + return +} + +func Sum[T int | int64](slice []T) (s T) { + for _, e := range slice { + s += e + } + return +}