Slipkorn

Máquinas de Helado

Jul 17th, 2014
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. type Cajon = (String,Float)
  2. type Bidon = (Int,Float)
  3. type Helado = (String, Int, Float)
  4.  
  5. longitud :: [a] -> Float
  6. longitud [] = 0
  7. longitud (x:xs) = 1 + longitud xs
  8.  
  9. vocales :: String -> Float
  10. vocales [] = 0
  11. vocales (x:xs)
  12.     | x == 'a' = 1 + vocales xs
  13.     | x == 'e' = 1 + vocales xs
  14.     | x == 'i' = 1 + vocales xs
  15.     | x == 'o' = 1 + vocales xs
  16.     | x == 'u' = 1 + vocales xs
  17.     | otherwise = 0 + vocales xs
  18.  
  19.  
  20. salioMal :: Helado -> Bool
  21. salioMal ("frutilla",n,prop) = (n > 0) || (prop /= 0.4)
  22. salioMal ("durazno",n,prop) = (n > 0) || (prop < 0.2) || (prop > 0.6)
  23. salioMal (helado,n,prop)
  24.     | (longitud helado < 8) = (n > 0) || ((longitud helado / 10) /= prop)
  25.     | (longitud helado >= 8) = (n > 0) || ((vocales helado / 10) /= prop)
  26.     | otherwise = False
  27.  
  28. heladera :: Int -> Helado -> Helado
  29. heladera n (a,b,c) = (a,n,c)
  30.  
  31. batidora :: Cajon -> Bidon -> Helado
  32. batidora (nombre,kilos) (temp,litros) = (nombre,temp,(litros/kilos))
  33.  
  34. exprimidora :: Cajon -> Cajon
  35. exprimidora (nombre,kilos) = (nombre,(kilos/2))
  36.  
  37. mixturadora :: Helado -> Helado -> Helado
  38. mixturadora (nombre1,temp1,prop1) (nombre2,temp2,prop2) = ((nombre1 ++ "-" ++ nombre2) , (min temp1 temp2) , (prop1+prop2)/2)
  39.  
  40. dispenser :: Float -> Bidon
  41. dispenser n = (0,n)
  42.  
  43. cintaTransportadora f1 f2 f3 = (f3 . f2 . f1)
  44.  
  45. cintaUnificadora f1 f2 f3 = f3 f1 f2
  46.  
  47. produccionEnSerie cajones bidon = filter (\x -> not(salioMal (batidora x bidon))) cajones
Advertisement
Add Comment
Please, Sign In to add comment