package main
func generateMatrix(n int) [][]int {
res := make([][]int, n)
for i := range res {
res[i] = make([]int, n)
}
cnt := 1
x, y := 0, 0
for l := n; l > 0; l -= 2 {
if l == 1 {
res[y][x] = cnt
return res
}
for dir := 0; dir < 4; dir++ {
var xSpeed, ySpeed int
switch dir {
case 0:
xSpeed, ySpeed = 1, 0
case 1:
xSpeed, ySpeed = 0, 1
case 2:
xSpeed, ySpeed = -1, 0
default:
xSpeed, ySpeed = 0, -1
}
for i := 0; i < l-1; i, cnt = i+1, cnt+1 {
res[y][x] = cnt
x, y = x+xSpeed, y+ySpeed
}
}
x, y = x+1, y+1
}
return res
}
/* func main() {
fmt.Println(generateMatrix(0))
fmt.Println(generateMatrix(1))
fmt.Println(generateMatrix(2))
fmt.Println(generateMatrix(3))
fmt.Println(generateMatrix(4))
} */