aoc_2024/2025/seven/seven.go

66 lines
916 B
Go

package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func check(err error) {
if err != nil {
panic(err)
}
}
type beams struct {
list map[int]int
}
func newBeams() beams {
var b beams
b.list = make(map[int]int)
return b
}
func (b *beams) add(pos int) {
b.list[pos]++
}
func (b *beams) del(pos int) {
delete(b.list, pos)
}
func main() {
file, err := os.Open("seven.txt")
check(err)
defer file.Close()
scanner := bufio.NewScanner(file)
scanner.Scan()
text := scanner.Text()
start := strings.IndexRune(text, 'S')
beamSet := make(map[int]int)
beamSet[start] = 1
for scanner.Scan() {
text := scanner.Text()
for beam, nways := range beamSet {
if text[beam] == '^' {
beamSet[beam-1] += nways
beamSet[beam+1] += nways
delete(beamSet, beam)
}
}
}
timelines := 0
for _, nways := range beamSet {
timelines += nways
}
fmt.Printf("N splits: %d\n", timelines)
}