thoga31

Friend Numbers

Jun 26th, 2013
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import Data.List (nubBy)
  2.  
  3. -- SOLUTION 1
  4. friends xs = nubBy f [(a, b) | a <- xs, b <- xs, ((a + b) `mod` 10) == 0]
  5.   where
  6.     f (a1, b1) (a2, b2) = (a1 == b2) && (a2 == b1)
  7.  
  8. main :: IO()
  9. main = do
  10.     a <- (readLn :: IO [Int])
  11.     let frs = friends a
  12.     putStrLn $ "Ha " ++ (show $ length frs) ++ " pares:"
  13.     mapM_ putStrLn $ map show frs
  14.  
  15. -- SOLUTION 2 (related)
  16. import Control.Monad (guard)
  17. import Data.List (nubBy)
  18.  
  19. friends xs = do
  20.     a <- xs
  21.     b <- xs
  22.     guard $ (a + b) `mod` 10 == 0
  23.     return $ (a, b)
  24.  
  25. main :: IO()
  26. main = do
  27.     a <- (readLn :: IO [Int])
  28.     let frs = nubBy f $ friends a
  29.     putStrLn $ "Ha " ++ (show $ length frs) ++ " pares:"
  30.     mapM_ putStrLn $ map show frs
  31.   where
  32.     f (a1, b1) (a2, b2) = (a1 == b2) && (a2 == b1)
Advertisement
Add Comment
Please, Sign In to add comment