add new solutions

This commit is contained in:
kanna5 2026-01-05 16:48:03 +09:00
parent 886b5e0a8e
commit 67cad91898
Signed by: kkyy
GPG key ID: 06332F3965E9B0CF
47 changed files with 1549 additions and 1 deletions

View file

@ -0,0 +1,59 @@
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