From b51f0d65d32ff11b6dec50974d6cb9a30374d7be Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Wed, 7 Jun 2023 10:35:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=8E=B7=E5=8F=96=E7=9B=B8?= =?UTF-8?q?=E9=82=BB=E4=B8=8A=E4=B8=8B=E5=B7=A6=E5=8F=B3=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/g2d/g2d.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/utils/g2d/g2d.go b/utils/g2d/g2d.go index 39f3734..906926c 100644 --- a/utils/g2d/g2d.go +++ b/utils/g2d/g2d.go @@ -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 +}