🎨 A* 结构调整
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package astar
|
||||
|
||||
import "github.com/kercylan98/minotaur/utils/generic"
|
||||
|
||||
type path[Node comparable, V generic.SignedNumber] []Node
|
||||
|
||||
// 获取末位元素
|
||||
func (p path[Node, V]) last() Node {
|
||||
return p[len(p)-1]
|
||||
}
|
||||
|
||||
// 将 n 追加到末位,返回新的路径,不影响原始路径
|
||||
func (p path[Node, V]) cont(n Node) path[Node, V] {
|
||||
cp := make([]Node, len(p), len(p)+1)
|
||||
copy(cp, p)
|
||||
cp = append(cp, n)
|
||||
return cp
|
||||
}
|
||||
|
||||
// cost 计算路径总消耗
|
||||
func (p path[Node, V]) cost(d func(a, b Node) V) (c V) {
|
||||
for i := 1; i < len(p); i++ {
|
||||
c += d(p[i-1], p[i])
|
||||
}
|
||||
return c
|
||||
}
|
||||
Reference in New Issue
Block a user