2025 Day 4 Complete!
This commit is contained in:
49
2025/day04/main.go
Normal file
49
2025/day04/main.go
Normal file
@@ -0,0 +1,49 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user