Cleanup
This commit is contained in:
parent
00e23e364a
commit
8e7262ad45
@ -17,7 +17,7 @@ func part1(inp h.CoordByteMap) {
|
|||||||
var total int
|
var total int
|
||||||
heads := inp.FindAll('0')
|
heads := inp.FindAll('0')
|
||||||
for _, h := range heads {
|
for _, h := range heads {
|
||||||
trails := findTrails(inp, h, h)
|
trails := findTrails(inp, h, h, false)
|
||||||
total = total + len(trails)
|
total = total + len(trails)
|
||||||
}
|
}
|
||||||
fmt.Println("# Part 1")
|
fmt.Println("# Part 1")
|
||||||
@ -28,14 +28,14 @@ func part2(inp h.CoordByteMap) {
|
|||||||
var total int
|
var total int
|
||||||
heads := inp.FindAll('0')
|
heads := inp.FindAll('0')
|
||||||
for _, h := range heads {
|
for _, h := range heads {
|
||||||
trails := findUniqueTrails(inp, h, h)
|
trails := findTrails(inp, h, h, true)
|
||||||
total = total + len(trails)
|
total = total + len(trails)
|
||||||
}
|
}
|
||||||
fmt.Println("# Part 1")
|
fmt.Println("# Part 1")
|
||||||
fmt.Println("Scores:", total)
|
fmt.Println("Scores:", total)
|
||||||
}
|
}
|
||||||
|
|
||||||
func findUniqueTrails(m h.CoordByteMap, st h.Coordinate, curr h.Coordinate) []h.Coordinate {
|
func findTrails(m h.CoordByteMap, st h.Coordinate, curr h.Coordinate, unique bool) []h.Coordinate {
|
||||||
currBt := m.Get(curr)
|
currBt := m.Get(curr)
|
||||||
if currBt == '9' {
|
if currBt == '9' {
|
||||||
return []h.Coordinate{curr}
|
return []h.Coordinate{curr}
|
||||||
@ -44,24 +44,12 @@ func findUniqueTrails(m h.CoordByteMap, st h.Coordinate, curr h.Coordinate) []h.
|
|||||||
var trails []h.Coordinate
|
var trails []h.Coordinate
|
||||||
for _, nx := range []h.Coordinate{curr.North(), curr.East(), curr.South(), curr.West()} {
|
for _, nx := range []h.Coordinate{curr.North(), curr.East(), curr.South(), curr.West()} {
|
||||||
if m.ContainsCoord(nx) && m.Get(nx) == currBt+1 {
|
if m.ContainsCoord(nx) && m.Get(nx) == currBt+1 {
|
||||||
res := findUniqueTrails(m, st, nx)
|
res := findTrails(m, st, nx, unique)
|
||||||
trails = append(trails, res...)
|
if unique {
|
||||||
}
|
trails = append(trails, res...)
|
||||||
}
|
} else {
|
||||||
return trails
|
trails = appendUnique(trails, res...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func findTrails(m h.CoordByteMap, st h.Coordinate, curr h.Coordinate) []h.Coordinate {
|
|
||||||
currBt := m.Get(curr)
|
|
||||||
if currBt == '9' {
|
|
||||||
return []h.Coordinate{curr}
|
|
||||||
}
|
|
||||||
|
|
||||||
var trails []h.Coordinate
|
|
||||||
for _, nx := range []h.Coordinate{curr.North(), curr.East(), curr.South(), curr.West()} {
|
|
||||||
if m.ContainsCoord(nx) && m.Get(nx) == currBt+1 {
|
|
||||||
res := findTrails(m, st, nx)
|
|
||||||
trails = appendUnique(trails, res...)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return trails
|
return trails
|
||||||
|
Loading…
Reference in New Issue
Block a user