day 04
This commit is contained in:
66
04/main.go
Normal file
66
04/main.go
Normal file
@@ -0,0 +1,66 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user