1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| func calcClean(board [][]byte, rMove int, cMove int, color byte) int { m, n := len(board), len(board[0]) directions := []struct { x int y int }{ {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}, } ans := 0 for _, direction := range directions { x := rMove + direction.x y := cMove + direction.y if x < 0 || x >= m || y < 0 || y >= n || board[x][y] == '.' || board[x][y] == color { continue } cur := 1 for x >= 0 && x < m && y >= 0 && y < n && board[x][y] != '.' { if board[x][y] == color { ans += cur break } cur++ x += direction.x y += direction.y } } return ans }
|