43 lines
801 B
Go
43 lines
801 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
func printTriangle(n int) {
|
|
// degenerate cases
|
|
if n <= 0 {
|
|
return
|
|
}
|
|
fmt.Println(1)
|
|
if n == 1 {
|
|
return
|
|
}
|
|
// iterate over rows, zero based
|
|
a := make([]int, (n+1)/2)
|
|
a[0] = 1
|
|
for row, middle := 1, 0; row < n; row++ {
|
|
// generate new row
|
|
even := row&1 == 0
|
|
if even {
|
|
a[middle+1] = a[middle] * 2
|
|
}
|
|
for i := middle; i > 0; i-- {
|
|
a[i] += a[i-1]
|
|
}
|
|
// print row
|
|
for i := 0; i <= middle; i++ {
|
|
fmt.Print(a[i], " ")
|
|
}
|
|
if even {
|
|
middle++
|
|
}
|
|
for i := middle; i >= 0; i-- {
|
|
fmt.Print(a[i], " ")
|
|
}
|
|
fmt.Println("")
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
printTriangle(4)
|
|
}
|