Pascal's triangle: Difference between revisions

Go solution
(Go solution)
Line 465:
 
END SUBROUTINE Print_Triangle</lang>
=={{header|Go}}==
No output for n < 1. Otherwise, output formatted left justified.
<lang 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)
}
<lang>
Output:
<pre>
1
1 1
1 2 1
1 3 3 1
</pre>
 
=={{header|Groovy}}==
1,707

edits