aoc2024/day-16/internal/two/neighbours.go

33 lines
551 B
Go

package two
func neighbours(n node) [3]node {
switch n.direction {
case N:
return [3]node{
newNode(n.x, n.y-1, N),
newNode(n.x-1, n.y, W),
newNode(n.x+1, n.y, E),
}
case E:
return [3]node{
newNode(n.x+1, n.y, E),
newNode(n.x, n.y-1, N),
newNode(n.x, n.y+1, S),
}
case S:
return [3]node{
newNode(n.x, n.y+1, S),
newNode(n.x-1, n.y, W),
newNode(n.x+1, n.y, E),
}
case W:
return [3]node{
newNode(n.x-1, n.y, W),
newNode(n.x, n.y+1, S),
newNode(n.x, n.y-1, N),
}
default:
return [3]node{}
}
}