exercism/go/pascals-triangle/pascal.go
2016-08-13 18:20:14 -05:00

27 lines
608 B
Go

package pascal
// Triangle returns pascals triangle up to depth
func Triangle(depth int) [][]int {
var ret [][]int
for currDepth := 0; currDepth < depth; currDepth++ {
var newRow, prevRow []int
// Each row is currDepth+1 long
rowLength := currDepth + 1
// Rows start with a 1
newRow = append(newRow, 1)
if currDepth > 0 {
prevRow = ret[currDepth-1]
}
for i := 1; i < rowLength; i++ {
if i == rowLength-1 {
// Rows end with a 1 also
newRow = append(newRow, 1)
break
}
newRow = append(newRow, prevRow[i-1]+prevRow[i])
}
ret = append(ret, newRow)
}
return ret
}