Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module Work where
  2.  --ex.: 4
  3.  metades :: [a] -> ([a],[a])
  4.  metades l = (esq,dir)
  5.          where
  6.             n1 = length l `div` 2
  7.             esq = take n1 l
  8.             dir = drop n1 l
  9.  
  10.  --ex.: 8
  11.  maxOccurs :: Integer -> Integer -> (Integer,Integer)
  12.  maxOccurs a b | a > b = (a,1)
  13.                | a < b = (b,1)
  14.                | otherwise = (a,2)
  15.  
  16.  orderTriple :: (Integer,Integer,Integer) -> (Integer,Integer,Integer)
  17.  orderTriple (a,b,c) | (a > b) && (b > c) = (c,b,a)
  18.                      | (b > a) && (a > c) = (c,a,b)
  19.                      | (b > c) && (c > a) = (a,c,b)
  20.                      | otherwise = (b,a,c)
  21.  
  22.  --ex.: 24
  23.  divprop :: Int -> [Int]
  24.  divprop x = [n | n <- [1..x-1], mod x n == 0]
  25.  
  26.  --ex.: 26
  27.  primo :: Int -> Bool
  28.  primo n = length [x | x <- [1..n], mod n x == 0] == 2
  29.  
  30.  --ex.: 29
  31.  pitagoricos :: Int -> [(Int,Int,Int)]
  32.  pitagoricos n = [(x,y,z) | x <- [1..n], y <- [1..n], z <- [1..n], x^2 + y^2 == z^2]
  33.  
  34.  --ex.: 30
  35.  factorial :: Int -> Int
  36.  factorial 0 = 1
  37.  factorial n = n* factorial (n-1)
  38.  
  39.  rangeProduct :: Int -> Int -> Int
  40.  rangeProduct n m | n == m = n
  41.                   | n > m = m * rangeProduct n (m+1)
  42.  
  43.  --ex.: 38
  44.  myreplicate :: Int -> a -> [a]
  45.  myreplicate 0 x = []
  46.  myreplicate n x = x : myreplicate (n-1) x
  47.  
  48.  --ex.: 40  !!! NÃO SEI FAZER !!!
  49.  --forte :: String -> Bool
  50.  --forte cs = length [c,s,v | c<-cs isLower c, s<-cs isUpper s, v<-cs isDigit v] >= 8
  51.  
  52.  --ex.: 41
  53.  delete :: Eq a => a -> [a] -> [a]
  54.  delete x []      = []
  55.  delete x (y:ys) | x == y = delete x ys
  56.                  | otherwise = y:delete x ys
  57.  
  58.  --ex.: 42
  59.  myinter :: a -> [a] -> [a]
  60.  myinter x [] = []
  61.  myinter x [y] = [y]
  62.  myinter x (y:ys) = y:x:myinter x ys
  63.  
  64.  --ex.: 43
  65.  insert :: Ord a => a -> [a] -> [a]
  66.  insert x [] = [x]
  67.  insert x (y:ys) | x <= y = (x:y:ys)
  68.                  | otherwise = y:insert x ys
  69.  
  70.  isort :: Ord a => [a] -> [a]
  71.  isort [] = []
  72.  isort (x:xs) = insert x (isort xs)
  73.  
  74.  --ex.: 44
  75.  minimum' :: Ord a => [a] -> a
  76. minimum' [x] = x
  77.  minimum' (x:xs) = minimum_aux x xs
  78.      where
  79.        minimum_aux :: Ord a => a -> [a] -> a
  80.        minimum_aux x [] = x
  81.        minimum_aux x (y:ys) | x <= y = minimum_aux x ys
  82.                             | x > y = minimum_aux y ys
  83.  
  84. minimum :: Ord a => [a] -> a
  85. minimum [x] = x
  86. minimum (x:y:xs) | x <= y = minimum' (x:xs)
  87.                   | x > y = minimum' (y:xs)
  88.  
  89. mydelete :: Eq a => a -> [a] -> [a]
  90. mydelete x [] = []
  91. mydelete x (y:ys) | x == y = ys
  92.                   | otherwise = y:mydelete x ys
  93.  
  94. ssort :: Ord a => [a] -> [a] -- !!! NÃO SEI FAZER !!!
  95. ssort [] = []
  96. ssort l = m : ll
  97.       where
  98.        m = minimum' l
  99.         ll = ssort (delete m l)
  100.  
  101.  --ex.: 45
  102.  merge :: Ord a => [a] -> [a] -> [a]
  103.  merge l1 [] = l1
  104.  merge [] l2 = l2
  105.  merge (x:xs) (y:ys) | x <= y = x:merge xs (y:ys)
  106.                      | x > y = y:merge (x:xs) ys
  107.  
  108.  mymetades :: [a] -> ([a],[a])
  109.  mymetades [] = ([],[])
  110.  mymetades l = (l1,l2)
  111.          where
  112.             n = div (length l) 2
  113.             l1 = take n l
  114.             l2 = drop n l
  115.  --msort :: Ord a => [a] -> [a] -- !!! NÃO SEI FAZER !!!
  116.  --msort [] = []
  117.  --msort [x] = [x]
  118.  --msort l = (merge l1) (merge l2)
  119.        --where
  120.          --(l1,l2) = mymetades l
  121.  
  122.  --ex.: 47 !!! NÃO SEI FAZER !!!
  123.  permutations :: Eq a => [a] -> [[a]]
  124.  permutations [] = []
  125.  permutations xs = [i:j | i <- xs, j <- permutations $ delete i xs ]
  126.  
  127.  --ex.: 48
  128.  combo :: (a -> b) -> (a -> Bool) -> [a] -> [b]
  129.  combo f p xs = map f (filter p xs)
  130.  
  131.  --ex.: 51
  132.  myzipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
  133.  myzipWith _ [] [] = []
  134.  myzipWith f (x:xs) (y:ys) = f x y : zipWith f xs ys
  135.  
  136.  --ex.:53
  137.  shift :: [a] -> Int -> [a]
  138.  shift l n = drop n l  ++ take n l
  139.  rotate :: [a] -> [[a]]
  140.  rotate l = [shift l i | i <- [0 .. (length l) -1]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement