aoc2024/day-08/internal/one/graph.go

35 lines
706 B
Go

package one
import (
"strings"
)
type graph struct {
data []string
antennae []antenna
antinodes map[coords]struct{}
}
func newGraph() *graph {
return &graph{antinodes: make(map[coords]struct{})}
}
func (g *graph) String() string {
return strings.Join(g.data, "\n")
}
func (g *graph) isOutOfBounds(c coords) bool {
return c.x < 0 || c.y < 0 || c.y >= len(g.data) || c.x >= len(g.data[0])
}
func (g *graph) debug() string {
for _, antenna := range g.antennae {
g.data[antenna.y] = replaceAtIndex(g.data[antenna.y], antenna.identifier, antenna.x)
}
for antinode := range g.antinodes {
g.data[antinode.y] = replaceAtIndex(g.data[antinode.y], '#', antinode.x)
}
return g.String()
}