Created
April 23, 2012 19:11
-
-
Save avwhite/2473166 to your computer and use it in GitHub Desktop.
Løsning på problem 2 i Haskell
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
--Data der definere elementerne i mængden B (mængden af børn) | |
--Kon (Køn) er enten dreng, D, eller pige, P | |
data Kon = D | P | |
--Dag er den ugedag barnet er født. deriving (Eq) gør at lighed er defineret for typen. | |
data Dag = Ma | Ti | On | To | Fr | Lo | So deriving (Eq) | |
--Man konstruere et barn ved funktionen B, der tager et Køn og en dag. | |
data Barn = B Kon Dag | |
--Nyttige funktioner til at operer på elementerne | |
erDreng :: Barn -> Bool | |
erDreng (B D _) = True | |
erDreng (B P _) = False | |
erDag :: Dag -> Barn -> Bool | |
erDag pd (B _ d) = pd == d | |
tirsdagsDreng b = erDreng b && erDag Ti b | |
--b er mængden af alle børn | |
b = [B D Ma, B D Ti, B D On, B D To, B D Fr, B D Lo, B D So, | |
B P Ma, B P Ti, B P On, B P To, B P Fr, B P Lo, B P So] | |
--b2 er det cartesiske produkt af b og b, b^2 | |
b2 = [ (x,y) | x <- b, y <- b] | |
--omega er mængden af børne par, hvor mindst det ene er en tirsdags dreng | |
omega = [ (x, y) | (x,y) <- b2, tirsdagsDreng x || tirsdagsDreng y ] | |
--a er delmængden af omega, hvor begge børn er drenge | |
a = [ (x,y) | (x,y) <- omega, erDreng x, erDreng y] | |
--Udskriver længden(cardinaliteten) af a og længden af omega på den næste linje | |
--og giver dermed den brøk der er svaret. | |
main = do | |
putStrLn $ show (length a) | |
putStrLn $ show (length omega) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Nu er jeg ikke sikker på om det er rigtigt... Måske skal der stå
omega = [ (x, y) | (x,y) <- b2, tirsdagsDreng x ]
istedet for
omega = [ (x, y) | (x,y) <- b2, tirsdagsDreng x || tirsdagsDreng y ]
På linje 31