| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | package mainfunc 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))} */
 |