Pascal's triangle: Difference between revisions

Content added Content deleted
(Go solution)
Line 465: Line 465:


END SUBROUTINE Print_Triangle</lang>
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}}==
=={{header|Groovy}}==