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

35 lines
698 B
Go
Raw Permalink Normal View History

2024-12-08 19:55:23 +00:00
package two
import (
"strings"
)
type graph struct {
data []string
antennae []antenna
antinodes antiNodeCache
}
func newGraph() *graph {
2024-12-08 20:11:03 +00:00
return &graph{antinodes: newAntiNodeCache()}
2024-12-08 19:55:23 +00:00
}
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 {
2025-01-07 17:24:01 +00:00
g.data[antenna.y] = replaceAtIndex(g.data[antenna.y], antenna.identifier, antenna.x)
2024-12-08 19:55:23 +00:00
}
for antinode := range g.antinodes.data {
2025-01-07 17:24:01 +00:00
g.data[antinode.y] = replaceAtIndex(g.data[antinode.y], '#', antinode.x)
2024-12-08 19:55:23 +00:00
}
return g.String()
}