From 7d8df0db21dbbda1a38ad9d69ae5624875a66aa4 Mon Sep 17 00:00:00 2001 From: Maximilian Friedersdorff Date: Sun, 7 Dec 2025 20:27:32 +0000 Subject: [PATCH] Half assed start at seven --- 2025/seven/seven.go | 70 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 2025/seven/seven.go diff --git a/2025/seven/seven.go b/2025/seven/seven.go new file mode 100644 index 0000000..c849bc9 --- /dev/null +++ b/2025/seven/seven.go @@ -0,0 +1,70 @@ +package main + +import ( + "bufio" + "errors" + "fmt" + "os" + "strconv" + "strings" +) + +func check(err error) { + if err != nil { + panic(err) + } +} + +type beam int +type beams struct { + b map[beam]struct{} +} + +func (b *beams) add(pos beam) { + b.b[pos] = {} +} + +func main() { + + file, err := os.Open("five.txt") + check(err) + defer file.Close() + + scanner := bufio.NewScanner(file) + scanner.Scan() + + text := scanner.Text() + + start := strings.IndexRune(text, 'S') + beams.add(beam(start)) + + for scanner.Scan() { + } + db, err := parse(scanner) + + check(err) + + nRaw := len(db.ranges) + + for { + before, after := db.collapse() + + fmt.Printf("Collapsed %d to %d ranges\n", before, after) + + if before == after { + break + } + } + + potentialNFresh := 0 + for _, r := range db.ranges { + potentialNFresh += r.nInRange() + } + + fmt.Printf( + "N raw %d and consolidated %d. %d potential fresh ingredients.\n", + nRaw, + len(db.ranges), + potentialNFresh, + ) +}