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}}== |