Drill

ProblemsGo › patterns

Total the two diagonals

easypatternsGridsMathGo

A scoring sheet is a square grid, and the bonus is whatever sits on the two diagonals.

diagonalTotal(sheet: list<list<int>>) → int

Go needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

func diagonalTotal(sheet [][]int) int {
	
}

Worked examples

CallResult
diagonalTotal([][]int{[]int{1, 2, 3}, []int{4, 5, 6}, []int{7, 8, 9}})25
diagonalTotal([][]int{[]int{1, 2}, []int{3, 4}})10
diagonalTotal([][]int{[]int{5}})5
diagonalTotal([][]int{})0

Hint

Walk one index down the grid. At row i the two diagonal cells are column i and column (last - i) — and on an odd grid those meet in the middle.

Reference solution in Go
func diagonalTotal(sheet [][]int) int {
	total := 0
	n := len(sheet)
	for i := 0; i < n; i++ {
	    total += sheet[i][i]
	    if i != n-1-i {
	        total += sheet[i][n-1-i]
	    }
	}
	return total
}

The same problem in another language

More patterns problems in Go