summaryrefslogtreecommitdiff
path: root/2023/Go/internal/day_02/part_02/part_02.go
diff options
context:
space:
mode:
authorDJ O'Leary <dijitol@proton.me>2025-11-29 20:23:02 +0100
committerDJ O'Leary <dijitol@proton.me>2025-11-29 20:23:02 +0100
commit4c3a50166bf0f78ce89459c352cc1c6536a8b96d (patch)
tree02e4b66a1435680ef1e92bf82576747b27f16447 /2023/Go/internal/day_02/part_02/part_02.go
parentbe2f8528b3829f8263507da301812d852297c168 (diff)
chore: make language folders snake_case
Diffstat (limited to '2023/Go/internal/day_02/part_02/part_02.go')
-rw-r--r--2023/Go/internal/day_02/part_02/part_02.go114
1 files changed, 0 insertions, 114 deletions
diff --git a/2023/Go/internal/day_02/part_02/part_02.go b/2023/Go/internal/day_02/part_02/part_02.go
deleted file mode 100644
index ffb9691..0000000
--- a/2023/Go/internal/day_02/part_02/part_02.go
+++ /dev/null
@@ -1,114 +0,0 @@
-package part_02
-
-import (
- "os"
- "regexp"
- "strconv"
- "strings"
-)
-
-type cubes struct {
- red int
- blue int
- green int
-}
-
-func Solve() {
- contents, err := os.ReadFile("../_input/day_02.txt")
- if err != nil {
- panic(err)
- }
-
- lines := strings.Split(string(contents), "\n")
- answer := processLines(lines)
-
- println(answer)
-}
-
-func processLines(lines []string) int {
- var answer int
-
- for _, line := range lines {
- if line == "" || line == "\n" {
- continue
- }
-
- shownCubes := convertLineToCubes(line)
-
- maxCubes := getMaximumCubes(shownCubes)
- power := getPower(maxCubes)
- answer += power
- }
-
- return answer
-}
-
-func convertLineToCubes(line string) []cubes {
- var shownCubes []cubes
-
- redRegex := regexp.MustCompile(`(\d+) red`)
- blueRegex := regexp.MustCompile(`(\d+) blue`)
- greenRegex := regexp.MustCompile(`(\d+) green`)
-
- for _, round := range strings.Split(line, ";") {
- var cubes cubes
-
- redMatches := redRegex.FindStringSubmatch(round)
- if redMatches != nil {
- red, err := strconv.Atoi(redMatches[1])
- if err != nil {
- panic("Could not convert red to int: " + redMatches[1])
- } else {
- cubes.red = red
- }
- }
-
- blueMatches := blueRegex.FindStringSubmatch(round)
- if blueMatches != nil {
- blue, err := strconv.Atoi(blueMatches[1])
- if err != nil {
- panic("Could not convert green to int: " + blueMatches[1])
- } else {
- cubes.blue = blue
- }
- }
-
- greenMatches := greenRegex.FindStringSubmatch(round)
- if greenMatches != nil {
- green, err := strconv.Atoi(greenMatches[1])
- if err != nil {
- panic("Could not convert green to int: " + greenMatches[1])
- } else {
- cubes.green = green
- }
- }
-
- shownCubes = append(shownCubes, cubes)
- }
-
- return shownCubes
-}
-
-func getMaximumCubes(shownCubes []cubes) cubes {
- var maxCubes cubes
-
- for _, cubes := range shownCubes {
- if cubes.red > maxCubes.red {
- maxCubes.red = cubes.red
- }
-
- if cubes.blue > maxCubes.blue {
- maxCubes.blue = cubes.blue
- }
-
- if cubes.green > maxCubes.green {
- maxCubes.green = cubes.green
- }
- }
-
- return maxCubes
-}
-
-func getPower(maxCubes cubes) int {
- return maxCubes.red * maxCubes.blue * maxCubes.green
-}