Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type Interval = (Integer, Integer)
- prunikIntervalu :: Interval -> Interval -> Bool
- prunikIntervalu a b = prunikIntervalu' a b || prunikIntervalu' b a
- prunikIntervalu' :: Interval -> Interval -> Bool
- prunikIntervalu' (a1, a2) (b1, b2)
- | a1 >= b1 && a2 <= b1 || a1 <= b1 && a2 >= b1 = True
- | a1 == b1 && a2 == b2 = True
- | a1 <= b1 && a2 >= b2 || a1 >= b1 && a2 <= b2 = True
- | otherwise = False
- -- zvyšováním téhle konstanty značně stoupají paměťové nároky
- nasobitel = 1
- -- (z Prahy/Brna)
- honzovy_vyjezdy = [0..240*nasobitel]
- martinovy_vyjezdy = [0..240*nasobitel]
- -- (do motorestu)
- honzovy_dojezdy = [x + 40*nasobitel | x <- honzovy_vyjezdy]
- martinovy_dojezdy = [x + 60*nasobitel | x <- martinovy_vyjezdy]
- honzovy_intervaly = [(x, x+30*nasobitel) | x <- honzovy_dojezdy]
- martinovy_intervaly = [(x, x+30*nasobitel) | x <- martinovy_dojezdy]
- kombinace = [(x, y) | x <- honzovy_intervaly, y <- martinovy_intervaly]
- -- tedy počet všech dvojic protínajících se intervalů
- citatel = (fromIntegral ( length (filter fce kombinace))) :: Double
- -- přežvýká to z ( (,), (,)) na (,), (,)
- fce (prvni, druhy) = prunikIntervalu prvni druhy
- -- počet všech dvojic
- jmenovatel = (fromIntegral ( length kombinace)) :: Double
- vysledek = citatel / jmenovatel
Add Comment
Please, Sign In to add comment