Haskell Quiz/PP Pascal/Solution Jethr0
< Haskell Quiz | PP Pascal
Jump to navigation
Jump to search
Revision as of 00:48, 21 December 2006 by JohannesAhlmann (talk | contribs) (using 3 spaces to make the triangle more symmetrical)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Example:
> pp_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
Solution:
-- also using the pascal triangle function from [[Blow your Mind]]
pp_pascal n = unlines . map (center . showp) $ pascal
where pascal = take n $ iterate (\row -> zipWith (+) ([0] ++ row) (row ++ [0])) [1]
showp = concat . intersperse " " . map show
len = length . showp $ last pascal
center s = replicate ((len - (length s)) `div` 2) ' ' ++ s