projecteuler-go/pe28/pe28.go
2021-06-06 07:01:00 -05:00

58 lines
1.0 KiB
Go

package pe28
import (
"fmt"
)
type Matrix struct {
arr []int
width int
}
func (m Matrix) GetIndex(row, col int) int {
return m.arr[m.width*row+col]
}
func (m *Matrix) SetIndex(row, col, val int) {
m.arr[m.width*row+col] = val
}
func (m Matrix) String() {
for row := 0; row < m.width; row++ {
fmt.Println(m.arr[row*m.width : row*m.width+m.width])
}
}
func Solve(_ []string) {
/*
//width := 1001
width := 10
num_numbers := width * width
mat := Matrix{
arr: make([]int, num_numbers),
width: width,
}
i := num_numbers
cur_width
for i > 0; {
for y := width - 1; y >= 0; y-- {
mat.SetIndex(x, y, i)
i--
}
}
//fmt.Println(mat)
mat.String()
*/
max_width := 1001
sum := 1
for width := 1; width < max_width; width += 2 {
width_squared := width * width
sum += width_squared + width + 1 +
width_squared + 2*(width+1) +
width_squared + 3*(width+1) +
width_squared + 4*(width+1)
}
fmt.Println("Sum of diagonals =", sum)
}