27 lines
608 B
Go
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
|
||
|
}
|