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