From 42c69d44e5039fd5bbbcd6574ef3129530ec2652 Mon Sep 17 00:00:00 2001 From: Kharec Date: Mon, 8 Dec 2025 21:51:40 +0100 Subject: [PATCH] feat: solve part one --- internal/2022/DayThree/code.go | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 internal/2022/DayThree/code.go diff --git a/internal/2022/DayThree/code.go b/internal/2022/DayThree/code.go new file mode 100644 index 0000000..f9e374f --- /dev/null +++ b/internal/2022/DayThree/code.go @@ -0,0 +1,50 @@ +package daythree + +import ( + "advent-of-code/internal/registry" + "os" + "strings" +) + +func init() { + registry.Register("2022D3", ParseInput, PartOne, PartTwo) +} + +func ParseInput(filepath string) []string { + content, _ := os.ReadFile(filepath) + return strings.Split(string(content), "\n") +} + +func PartOne(data []string) int { + totalPriority := 0 + for _, rucksack := range data { + compartmentSize := len(rucksack) / 2 + firstCompartment := rucksack[:compartmentSize] + secondCompartment := rucksack[compartmentSize:] + + firstCompartmentItems := make(map[rune]bool) + for _, item := range firstCompartment { + firstCompartmentItems[item] = true + } + + var commonItem rune + for _, item := range secondCompartment { + if firstCompartmentItems[item] { + commonItem = item + break + } + } + + if commonItem >= 'a' && commonItem <= 'z' { + totalPriority += int(commonItem - 'a' + 1) + } else if commonItem >= 'A' && commonItem <= 'Z' { + totalPriority += int(commonItem - 'A' + 27) + } + } + + return totalPriority +} + +func PartTwo(data []string) int { + return 0 +}