Pascal's triangle: Difference between revisions

m
(adding maxima)
Line 924:
-- returns the first n rows
pascal = iterate nextRow [1]</lang>
 
A faster version:
<lang>split = filter (/= []) . f
where f [x] = [[]]
f (x:y:xs) = [x, y]:(f (y:xs))
pascal = map f . enumFromTo 1
where f 1 = [1]
f n = [1] ++ (map sum $ split y) ++ [1]
where y = f $ n - 1</lang>
 
Example:
<lang>*Main> putStr $ unlines $ map unwords $ map (map show) $ pascal 10
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
</lang>
 
=={{header|HicEst}}==