From 79d9f8d7cc74975027b2d286e6eb371782bf815c Mon Sep 17 00:00:00 2001 From: Kharec Date: Thu, 4 Dec 2025 21:10:42 +0100 Subject: [PATCH] feat: solve part two using json and recursive approach --- internal/2015/DayTwelve/code.go | 37 +++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/internal/2015/DayTwelve/code.go b/internal/2015/DayTwelve/code.go index 4294a9e..9fa6e19 100644 --- a/internal/2015/DayTwelve/code.go +++ b/internal/2015/DayTwelve/code.go @@ -1,11 +1,13 @@ package daytwelve import ( - "advent-of-code/internal/registry" + "encoding/json" "os" "regexp" "strconv" "strings" + + "advent-of-code/internal/registry" ) func init() { @@ -31,5 +33,36 @@ func PartOne(data []string) int { } func PartTwo(data []string) int { - return 0 + var sumNumbers func(any) int + sumNumbers = func(v any) int { + switch value := v.(type) { + case float64: + return int(value) + case []any: + sum := 0 + for _, item := range value { + sum += sumNumbers(item) + } + return sum + case map[string]any: + sum := 0 + for _, item := range value { + if str, ok := item.(string); ok && str == "red" { + return 0 + } + sum += sumNumbers(item) + } + return sum + default: + return 0 + } + } + + sum := 0 + for _, line := range data { + var value any + _ = json.Unmarshal([]byte(line), &value) + sum += sumNumbers(value) + } + return sum }