You are viewing a single comment's thread. Return to all comments →
-- Enter your code here. Read input from STDIN. Print output to STDOUT import Data.List generateRow :: Int -> Int -> [[Int]] -> [[Int]] generateRow current max list | current >= max = [] | current == 0 = [[1]] ++ (generateRow (current + 1) max [[1]]) | current == 1 = [[1,1]] ++ (generateRow (current + 1) max [[1,1]]) | current < max = do let x = ([[1] ++ (addTogether (last list)) ++ [1]]) x ++ (generateRow (current + 1) max x) addTogether :: [Int] -> [Int] addTogether x = (zipWith (+) x (tail x)) generateTriangle :: Int -> IO [[Int]] generateTriangle max = return (generateRow 0 max []) convertLineToInt :: String -> IO Int convertLineToInt line = return (read line :: Int) printTriangle :: [[Int]] -> IO () printTriangle x = case x of [] -> return () (a:b) -> do let y = (intercalate " " (map show a)) putStrLn $ y printTriangle b
main = getLine >>= convertLineToInt >>= generateTriangle >>= printTriangle
main :: IO () main = getLine >>= convertLineToInt >>= generateTriangle >>= printTriangle
Seems like cookies are disabled on this browser, please enable them to open this website
Pascal's Triangle
You are viewing a single comment's thread. Return to all comments →
main = getLine >>= convertLineToInt >>= generateTriangle >>= printTriangle
main :: IO () main = getLine >>= convertLineToInt >>= generateTriangle >>= printTriangle