From 345defec4ddbd3dc333342a50691c0c0d74d87d6 Mon Sep 17 00:00:00 2001 From: Kharec Date: Mon, 1 Dec 2025 21:28:27 +0100 Subject: [PATCH] feat: solve p2 --- internal/2015/DaySix/code.go | 52 +++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/internal/2015/DaySix/code.go b/internal/2015/DaySix/code.go index d9086d8..f1ef354 100644 --- a/internal/2015/DaySix/code.go +++ b/internal/2015/DaySix/code.go @@ -71,5 +71,55 @@ func PartOne(data []string) int { } func PartTwo(data []string) int { - return 0 + grid := make([]int, 1000*1000) + + for _, line := range data { + var op string + var x1, y1, x2, y2 int + + switch { + case strings.HasPrefix(line, "turn on "): + op = "on" + line = strings.TrimPrefix(line, "turn on ") + case strings.HasPrefix(line, "turn off "): + op = "off" + line = strings.TrimPrefix(line, "turn off ") + case strings.HasPrefix(line, "toggle "): + op = "toggle" + line = strings.TrimPrefix(line, "toggle ") + default: + continue + } + + parts := strings.Split(line, " through ") + firstCoordinates := strings.Split(parts[0], ",") + secondCoordinates := strings.Split(parts[1], ",") + + x1, _ = strconv.Atoi(firstCoordinates[0]) + y1, _ = strconv.Atoi(firstCoordinates[1]) + x2, _ = strconv.Atoi(secondCoordinates[0]) + y2, _ = strconv.Atoi(secondCoordinates[1]) + + for y := y1; y <= y2; y++ { + for x := x1; x <= x2; x++ { + idx := y*1000 + x + switch op { + case "on": + grid[idx]++ + case "off": + if grid[idx] > 0 { + grid[idx]-- + } + case "toggle": + grid[idx] += 2 + } + } + } + } + + total := 0 + for _, brightness := range grid { + total += brightness + } + return total }