Files
codekata-golang/28_number_spiral_diagonals/main.go
2020-10-28 10:18:43 +08:00

33 lines
497 B
Go

package main
import (
"errors"
"fmt"
)
func main() {
nums, _ := findSprialDiagonals(1001)
sum := 0
for _, n := range nums {
sum += n
}
fmt.Printf("nums=%v\nsum=%d\n", nums, sum)
}
func findSprialDiagonals(width int) ([]int, error) {
if width%2 == 0 {
return nil, errors.New("invalid width")
}
x := 3
ret := []int{1}
cw := 3
d := 2
for width/cw > 0 {
ret = append(ret, []int{x, x + d, x + 2*d, x + 3*d}...)
x = x + 3*d + cw + 1
cw += 2
d = cw - 1
}
return ret, nil
}