Pascal's triangle: Difference between revisions
Content added Content deleted
Line 324: | Line 324: | ||
=={{header|Groovy}}== |
=={{header|Groovy}}== |
||
=== Recursive |
=== Recursive === |
||
In the spirit of the Haskell "think in whole lists" solution here is a list-driven, minimalist solution: |
In the spirit of the Haskell "think in whole lists" solution here is a list-driven, minimalist solution: |
||
<lang groovy>pascal = { n -> (n <= 1) ? [1] : GroovyCollections.transpose([[0] + pascal(n - 1), pascal(n - 1) + [0]]).collect { it.sum() } }</lang> |
<lang groovy>pascal = { n -> (n <= 1) ? [1] : GroovyCollections.transpose([[0] + pascal(n - 1), pascal(n - 1) + [0]]).collect { it.sum() } }</lang> |
||
Line 330: | Line 330: | ||
Program for unformatted output: |
Program for unformatted output: |
||
<lang groovy> |
<lang groovy>def count = 15 |
||
(1..count).each { n -> |
|||
printf ("%2.0f:", n as float); (0..(count-n)).each { print " " }; pascal(n).each{ printf("%6.0f ", it as float) }; println "" |
|||
}</lang> |
|||
Output: |
Output: |
||
<pre> 1: 1 |
|||
<pre>1: [1] |
|||
2: 1 1 |
|||
2: [1, 1] |
|||
3: 1 2 1 |
|||
3: [1, 2, 1] |
|||
4: 1 3 3 1 |
|||
4: [1, 3, 3, 1] |
|||
5: 1 4 6 4 1 |
|||
5: [1, 4, 6, 4, 1] |
|||
6: 1 5 10 10 5 1 |
|||
6: [1, 5, 10, 10, 5, 1] |
|||
7: 1 6 15 20 15 6 1 |
|||
7: [1, 6, 15, 20, 15, 6, 1] |
|||
8: |
8: 1 7 21 35 35 21 7 1 |
||
9: |
9: 1 8 28 56 70 56 28 8 1 |
||
10: |
10: 1 9 36 84 126 126 84 36 9 1 |
||
11: |
11: 1 10 45 120 210 252 210 120 45 10 1 |
||
12: |
12: 1 11 55 165 330 462 462 330 165 55 11 1 |
||
13: |
13: 1 12 66 220 495 792 924 792 495 220 66 12 1 |
||
14: |
14: 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 |
||
15: |
15: 1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1 </pre> |
||
16: [1, 15, 105, 455, 1365, 3003, 5005, 6435, 6435, 5005, 3003, 1365, 455, 105, 15, 1] |
|||
17: [1, 16, 120, 560, 1820, 4368, 8008, 11440, 12870, 11440, 8008, 4368, 1820, 560, 120, 16, 1] |
|||
18: [1, 17, 136, 680, 2380, 6188, 12376, 19448, 24310, 24310, 19448, 12376, 6188, 2380, 680, 136, 17, 1] |
|||
19: [1, 18, 153, 816, 3060, 8568, 18564, 31824, 43758, 48620, 43758, 31824, 18564, 8568, 3060, 816, 153, 18, 1] |
|||
20: [1, 19, 171, 969, 3876, 11628, 27132, 50388, 75582, 92378, 92378, 75582, 50388, 27132, 11628, 3876, 969, 171, 19, 1]</pre> |
|||
=={{header|Haskell}}== |
=={{header|Haskell}}== |