Files
advent-of-code-2025/04/main.go
Simon Ziegler 642045825f day 04
2025-12-04 15:13:42 +01:00

67 lines
977 B
Go

package main
import (
"fmt"
"git.z1glr.de/advent-of-code-2025/pkg/aoc"
)
func testGrid(g *[][]string) int {
rollCount := 0
for yy, row := range *g {
for xx, roll := range row {
if roll == "@" {
freeCount := 0
for x := xx - 1; x <= xx+1; x++ {
for y := yy - 1; y <= yy+1; y++ {
if x < 0 || y < 0 || x >= len(row) || y >= len(*g) {
freeCount++
} else if (*g)[y][x] == "." {
freeCount++
}
}
}
if freeCount > 4 {
rollCount++
(*g)[yy][xx] = "x"
}
}
}
}
for yy, row := range *g {
for xx, roll := range row {
if roll != "@" {
(*g)[yy][xx] = "."
} else {
fmt.Print()
}
}
}
return rollCount
}
func main() {
lines := aoc.ReadFileRows(false)
grid := aoc.RowsToGrid(lines)
rollCount := testGrid(&grid)
fmt.Println(rollCount)
for {
if newCount := testGrid(&grid); newCount == 0 {
break
} else {
rollCount += newCount
}
}
fmt.Println(rollCount)
}