Guest User

Untitled

a guest
Jun 18th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. type Interval = (Integer, Integer)
  2.  
  3. prunikIntervalu :: Interval -> Interval -> Bool
  4. prunikIntervalu a b = prunikIntervalu' a b || prunikIntervalu' b a
  5.  
  6. prunikIntervalu' :: Interval -> Interval -> Bool
  7. prunikIntervalu' (a1, a2) (b1, b2)
  8. | a1 >= b1 && a2 <= b1 || a1 <= b1 && a2 >= b1 = True
  9. | a1 == b1 && a2 == b2 = True
  10. | a1 <= b1 && a2 >= b2 || a1 >= b1 && a2 <= b2 = True
  11. | otherwise = False
  12.  
  13. -- zvyšováním téhle konstanty značně stoupají paměťové nároky
  14. nasobitel = 1
  15.  
  16. -- (z Prahy/Brna)
  17. honzovy_vyjezdy = [0..240*nasobitel]
  18. martinovy_vyjezdy = [0..240*nasobitel]
  19.  
  20. -- (do motorestu)
  21. honzovy_dojezdy = [x + 40*nasobitel | x <- honzovy_vyjezdy]
  22. martinovy_dojezdy = [x + 60*nasobitel | x <- martinovy_vyjezdy]
  23.  
  24. honzovy_intervaly = [(x, x+30*nasobitel) | x <- honzovy_dojezdy]
  25. martinovy_intervaly = [(x, x+30*nasobitel) | x <- martinovy_dojezdy]
  26.  
  27. kombinace = [(x, y) | x <- honzovy_intervaly, y <- martinovy_intervaly]
  28.  
  29. -- tedy počet všech dvojic protínajících se intervalů
  30. citatel = (fromIntegral ( length (filter fce kombinace))) :: Double
  31. -- přežvýká to z ( (,), (,)) na (,), (,)
  32. fce (prvni, druhy) = prunikIntervalu prvni druhy
  33.  
  34. -- počet všech dvojic
  35. jmenovatel = (fromIntegral ( length kombinace)) :: Double
  36.  
  37. vysledek = citatel / jmenovatel
Add Comment
Please, Sign In to add comment