package q1895 func isMagicSq(grid [][]int, x, y, w int) bool { diag1Sum := 0 diag2Sum := 0 for i := range w { ax, ay := x+i, y+i diag1Sum += grid[ay][ax] ax = x + w - 1 - i diag2Sum += grid[ay][ax] } if diag1Sum != diag2Sum { return false } // horizontal for dy := range w { sum := 0 for dx := range w { sum += grid[y+dy][x+dx] } if sum != diag1Sum { return false } } // vertical for dx := range w { sum := 0 for dy := range w { sum += grid[y+dy][x+dx] } if sum != diag1Sum { return false } } return true } func largestMagicSquare(grid [][]int) int { k := 1 gW, gH := len(grid[0]), len(grid) Outer: for w := 2; w <= min(gW, gH); w++ { for y := range gH - w + 1 { for x := range gW - w + 1 { if isMagicSq(grid, x, y, w) { k = w continue Outer } } } } return k } var _ = largestMagicSquare