Files
adventofcode/2025/day04/main.go
2025-12-04 07:46:53 -06:00

50 lines
878 B
Go

package main
import (
"fmt"
h "git.bullercodeworks.com/brian/adventofcode/helpers"
)
func main() {
inp := h.StdinToStringSlice()
part1(inp)
part2(inp)
}
func part1(inp []string) {
var movable int
m := h.StringSliceToCoordByteMap(inp)
for c := range m.Field {
if m.Field[c] != '@' {
continue
}
if len(m.FindAdjacent(c, '@')) < 4 {
movable++
}
}
fmt.Println("# Part 1")
fmt.Println("Movable Rolls:",movable)
}
func part2(inp []string) {
var movable int
m := h.StringSliceToCoordByteMap(inp)
rolls := m.FindAll('@')
rollCnt := len(rolls)
prevRollCnt := 0
for rollCnt != prevRollCnt {
prevRollCnt = rollCnt
for i := range rolls {
if len(m.FindAdjacent(rolls[i], '@')) < 4 {
m.Put(rolls[i], '.')
movable++
}
}
rolls = m.FindAll('@')
rollCnt = len(rolls)
}
fmt.Println("# Part 2")
fmt.Println("Movable Rolls:",movable)
}