From b9928789dfe115a9f7dc2f7a5088f320c803422a Mon Sep 17 00:00:00 2001 From: Kharec Date: Tue, 2 Dec 2025 23:12:11 +0100 Subject: [PATCH] feat: solve day10 using traditionnal look and say --- internal/2015/DayTen/code.go | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 internal/2015/DayTen/code.go diff --git a/internal/2015/DayTen/code.go b/internal/2015/DayTen/code.go new file mode 100644 index 0000000..92c2fc0 --- /dev/null +++ b/internal/2015/DayTen/code.go @@ -0,0 +1,45 @@ +package dayten + +import ( + "os" + "strconv" + "strings" + + "advent-of-code/internal/registry" +) + +func init() { + registry.Register("2015D10", ParseInput, PartOne, PartTwo) +} + +func ParseInput(filepath string) string { + content, _ := os.ReadFile(filepath) + return string(content) +} + +func applyLookAndSay(data string, iterations int) int { + for range iterations { + var result strings.Builder + idx := 0 + for idx < len(data) { + digit := data[idx] + count := 1 + for idx+count < len(data) && data[idx+count] == digit { + count++ + } + result.WriteString(strconv.Itoa(count)) + result.WriteByte(digit) + idx += count + } + data = result.String() + } + return len(data) +} + +func PartOne(data string) int { + return applyLookAndSay(data, 40) +} + +func PartTwo(data string) int { + return applyLookAndSay(data, 50) +}