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) }