thoga31

Challenge 9 (Haskell)

Aug 13th, 2013
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import qualified Data.Char as Char
  2. import qualified Data.Map as Map
  3.  
  4. main :: IO()
  5. main = do
  6.   putStrLn challenge9
  7.   -- Must read the input from a file.
  8.  
  9. challenge9 = solve Map.empty 0 . map (head) . words $ "5\na\nn\n7\n4\nn\n6\n1\n0\ny\nw\na"
  10.   where
  11.     solve :: Map.Map Char Int -> Int -> String -> String
  12.     solve alpha sumdig [] = "Sum = " ++ (show sumdig) ++ "\n" ++ (unlines . map (\(x,y) -> show x ++ " = " ++ show y) $ Map.toList alpha)
  13.     solve alpha sumdig (x:xs) | Char.isLower x = case Map.lookup x alpha of
  14.                                                    Just n  -> solve (Map.insert x (n+1) alpha) sumdig xs
  15.                                                    Nothing -> solve (Map.insert x 1 alpha) sumdig xs
  16.                               | Char.isDigit x = solve alpha (Char.digitToInt x + sumdig) xs
  17.                               | otherwise      = solve alpha sumdig xs
Advertisement
Add Comment
Please, Sign In to add comment