main :: IO () main = do putStr "pocet radku: " -- prompt n <- getLine >>= return . read -- nacteni cisla if n > 0 then do putStr (unlines (map showLine (take n pt))) -- vypis trojuhelnika main -- a opakovani else return () -- ukonceni pt :: [[Integer]] -- Pascaluv trojuhelnik pt = iterate (\r -> zipWith (+) ([0]++r) (r++[0])) [1] showLine :: [Integer] -> String -- vypis radku showLine r = replicate m ' ' ++ concat (map showBox r) where m = abs (ll - length r * bwi) `div` 2 showBox :: Integer -> String -- vypis prvku showBox k = replicate p ' ' ++ sk ++ replicate r ' ' where sk = show k l = bwi - length sk r = l `div` 2 p = l - r bwi, ll :: Int bwi = 5 -- max sirka cisla ll = 80 -- delka radku na vystupu