Created
October 19, 2010 10:42
-
-
Save jiridanek/633995 to your computer and use it in GitHub Desktop.
Program v HS co sežere všechnu paměť
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Príklad 1. Z Brna vyrazí náhodne nekdy mezi polednem a ctvrtou hodinou | |
odpolední Honza autem do Prahy a opacným smerem nekdy ve stejném intervalu | |
autem Martin. Oba si dávají pul hodiny pauzu v motorestu v polovine cesty | |
(prístupném pro oba smery). Jaká je pravdepodobnost, že se tam potkají, jezdíli | |
Honza rychlostí 150 km/h, a Martin 100 km/h? (vzdálenost Brno-Praha je | |
200 km) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment