RSieve

Old Haskell exams for LPP

Sep 10th, 2018
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- exam 24/01/2018
  2.  
  3. ex1 :: [Int] -> Int
  4. ex1 [] = 0
  5. ex1 x = aux x 1
  6.     where
  7.         aux [] _ = 0
  8.         aux (x : xs) n = ((2 ^ (n - 1)) * x) + aux xs n+1
  9.  
  10. ex2 :: [Int] -> Int
  11. ex2 [] = 0
  12. ex2 x = sum (map (\(x, n) -> 2 ^ (n - 1) * x) (zip x [1..]))
  13.  
  14. -- exam 24/02/2018
  15.  
  16. ex3 :: (a -> Bool) -> [a] -> [Int]
  17. ex3 _ [] = []
  18. ex3 p x = aux p x 0
  19.     where
  20.         aux _ [] _ = []
  21.         aux p (x : xs) n | p x = n : aux p xs (n + 1)
  22.                          | otherwise = aux p xs (n + 1)
  23.  
  24. ex4 :: (a -> Bool) -> [a] -> [Int]
  25. ex4 _ [] = []
  26. ex4 p x = map snd (filter (p.fst) (zip x [0..]))
  27.  
  28. -- exam 18/06/2018
  29.  
  30. ex5 :: [Int] -> Int -> Int
  31. ex5 [] _ = 0
  32. ex5 x y = aux x y 0
  33.     where
  34.         aux [] _ _ = 0
  35.         aux (x : xs) y n = (x * (y ^ n)) + aux xs y (n+1)
  36.  
  37. ex6 :: [Int] -> Int -> Int
  38. ex6 [] _ = 0
  39. ex6 x y = sum (map (\(x, n) -> x * (y ^n)) (zip x [0..]))
  40.  
  41. -- exam 24/07/2018
  42.  
  43. ex7 :: [Int] -> Int
  44. ex7 [] = 0
  45. ex7 x = aux x 0
  46.     where
  47.         aux [] _ = 0
  48.         aux (x : xs) n | n `mod` 2 == 0 = x + aux xs (n + 1)
  49.                        | otherwise = (- x) + aux xs (n + 1)
  50.  
  51. ex8 :: [Int] -> Int
  52. ex8 [] = 0
  53. ex8 x = sum (map (\(x, n) -> if n `mod` 2 == 0 then x else - x) (zip x [0..]))
Advertisement