0f05998295
not copy the entire maze by value
54 lines
657 B
Go
54 lines
657 B
Go
package maze
|
|
|
|
import "math"
|
|
|
|
type Coordinates struct {
|
|
X, Y int
|
|
}
|
|
|
|
func (c Coordinates) Distance(o Coordinates) float64 {
|
|
x, y := float64(o.X-c.X), float64(o.Y-c.Y)
|
|
|
|
if y == 0 {
|
|
if x < 0 {
|
|
return -x
|
|
}
|
|
return x
|
|
}
|
|
|
|
if x == 0 {
|
|
if y < 0 {
|
|
return -y
|
|
}
|
|
return y
|
|
}
|
|
|
|
return math.Sqrt(x*x + y*y)
|
|
}
|
|
|
|
type Node struct {
|
|
Coords Coordinates
|
|
Up, Down *Node
|
|
Left, Right *Node
|
|
}
|
|
|
|
func NewNode(coords Coordinates) *Node {
|
|
return &Node{
|
|
Coords: coords,
|
|
Up: nil,
|
|
Down: nil,
|
|
Left: nil,
|
|
Right: nil,
|
|
}
|
|
}
|
|
|
|
type Maze struct {
|
|
Width, Height int
|
|
Nodes []*Node
|
|
}
|
|
|
|
type SolvedMaze struct {
|
|
*Maze
|
|
Solution []*Node
|
|
}
|