支持获取相邻上下左右位置

This commit is contained in:
kercylan98 2023-06-07 10:35:39 +08:00
parent 6db0f517e0
commit b51f0d65d3
1 changed files with 18 additions and 0 deletions

View File

@ -14,3 +14,21 @@ func PositionArrayToXY(position [2]int) (x, y int) {
func PositionClone(position [2]int) [2]int {
return [2]int{position[0], position[1]}
}
// GetAdjacentPositions 获取一个矩阵中,特定位置相邻的最多四个方向的位置
func GetAdjacentPositions[T any](matrix [][]T, x, y int) (result [][2]int) {
width, height := len(matrix), len(matrix[0])
if tx := x - 1; tx >= 0 {
result = append(result, PositionToArray(tx, y))
}
if tx := x + 1; tx < width {
result = append(result, PositionToArray(tx, y))
}
if ty := y - 1; ty >= 0 {
result = append(result, PositionToArray(x, ty))
}
if ty := y + 1; ty < height {
result = append(result, PositionToArray(x, ty))
}
return
}