Skip to content

Commit 0c4a3ca

Browse files
committed
refactor: use bfs utility in older code
1 parent 5fd39f1 commit 0c4a3ca

2 files changed

Lines changed: 17 additions & 16 deletions

File tree

go/2024/puzzles/day12/main.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
"fmt"
55

6+
"github.com/believer/aoc-utils/algorithms/bfs"
67
"github.com/believer/aoc-utils/files"
78
"github.com/believer/aoc-utils/grid"
89
)
@@ -92,27 +93,27 @@ func findCorners(area map[grid.Point]bool) int {
9293
}
9394

9495
func findPlantBed(g grid.Grid, visited map[grid.Point]bool, start grid.Point) (map[grid.Point]bool, int) {
95-
queue := []grid.Point{start}
96-
area := map[grid.Point]bool{}
96+
queue := bfs.New(start)
9797
perimeter := 0
9898

99-
for len(queue) > 0 {
100-
current := queue[0]
101-
queue = queue[1:]
99+
for queue.Loop() {
100+
current := queue.Pop()
102101

103102
if _, ok := visited[current]; ok {
104103
continue
105104
}
106105

107106
neighbors := getNeighbors(g, current)
108107
perimeter += 4 - len(neighbors)
109-
area[current] = true
108+
queue.Visit(current)
110109
visited[current] = true
111110

112-
queue = append(queue, neighbors...)
111+
for _, n := range neighbors {
112+
queue.Push(n)
113+
}
113114
}
114115

115-
return area, perimeter
116+
return queue.Visited, perimeter
116117
}
117118

118119
func getNeighbors(g grid.Grid, current grid.Point) []grid.Point {

go/2024/puzzles/day15/main.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"strings"
66

7+
"github.com/believer/aoc-utils/algorithms/bfs"
78
"github.com/believer/aoc-utils/files"
89
"github.com/believer/aoc-utils/grid"
910
)
@@ -95,12 +96,11 @@ func part2(name string) int {
9596
// Use BFS to find boxes
9697
moves:
9798
for _, m := range moves {
98-
queue := []grid.Point{robot}
99+
queue := bfs.New(robot)
99100
boxes := map[grid.Point]byte{}
100101

101-
for len(queue) > 0 {
102-
current := queue[0]
103-
queue = queue[1:]
102+
for queue.Loop() {
103+
current := queue.Pop()
104104

105105
if _, ok := boxes[current]; ok {
106106
continue
@@ -114,11 +114,11 @@ moves:
114114
case '#':
115115
continue moves
116116
case ']':
117-
queue = append(queue, next.Add(grid.LEFT))
118-
queue = append(queue, next)
117+
queue.Push(next.Add(grid.LEFT))
118+
queue.Push(next)
119119
case '[':
120-
queue = append(queue, next.Add(grid.RIGHT))
121-
queue = append(queue, next)
120+
queue.Push(next.Add(grid.RIGHT))
121+
queue.Push(next)
122122
}
123123
}
124124

0 commit comments

Comments
 (0)