Go Almost Magic Square
func almostMagicSquare(a []int) []int {
var grid [3][3]int
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
grid[i][j] = a[i*3+j]
}
}
rowSum := make([]int, 3)
colSum := make([]int, 3)
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
rowSum[i] += grid[i][j]
colSum[i] += grid[j][i]
}
}
maxSum := 0
for k, v := range rowSum {
maxSum = max(maxSum, v, colSum[k])
}
for i, j := 0, 0; i < 3 && j < 3; {
diff := min(maxSum-rowSum[i], maxSum-colSum[j])
grid[i][j] += diff
rowSum[i] += diff
colSum[j] += diff
if rowSum[i] == maxSum {
i++
}
if colSum[j] == maxSum {
j++
}
}
result := make([]int, 0, 9)
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
result = append(result, grid[i][j])
}
}
return result
}
This adjusts the matrix toward a matching target sum so the rows and columns line up more like a magic square.