feat: solve part two
This commit is contained in:
@@ -46,5 +46,36 @@ func PartOne(data int) int {
|
||||
}
|
||||
|
||||
func PartTwo(data int) int {
|
||||
return 0
|
||||
grid := make(map[[2]int]int)
|
||||
grid[[2]int{0, 0}] = 1
|
||||
|
||||
directions := [4][2]int{{1, 0}, {0, 1}, {-1, 0}, {0, -1}}
|
||||
x, y := 1, 0
|
||||
directionIdx := 0
|
||||
sideLength := 1
|
||||
stepsInSide := 1
|
||||
|
||||
for {
|
||||
sum := grid[[2]int{x - 1, y - 1}] + grid[[2]int{x - 1, y}] + grid[[2]int{x - 1, y + 1}] +
|
||||
grid[[2]int{x, y - 1}] + grid[[2]int{x, y + 1}] +
|
||||
grid[[2]int{x + 1, y - 1}] + grid[[2]int{x + 1, y}] + grid[[2]int{x + 1, y + 1}]
|
||||
|
||||
if sum > data {
|
||||
return sum
|
||||
}
|
||||
|
||||
grid[[2]int{x, y}] = sum
|
||||
|
||||
if stepsInSide == sideLength {
|
||||
stepsInSide = 0
|
||||
if directionIdx%2 == 1 {
|
||||
sideLength++
|
||||
}
|
||||
directionIdx = (directionIdx + 1) % 4
|
||||
}
|
||||
|
||||
x += directions[directionIdx][0]
|
||||
y += directions[directionIdx][1]
|
||||
stepsInSide++
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user