Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. import qualified Data.Map as Map
  2.  
  3. data Organ = Heart|Brain|Kidney|Spleen deriving (Show,Eq)
  4.  
  5. organs :: [Organ]
  6. organs = [Heart,Heart,Brain,Spleen,Spleen,Kidney]
  7.  
  8. ids :: [Int]
  9. ids = [2,7,13,14,21,24]
  10.  
  11. organPairs :: [(Int,Organ)]
  12. organPairs = zip ids organs
  13.  
  14. organCatalog :: Map.Map Int Organ
  15. organCatalog = Map.fromList organPairs
  16.  
  17. possibleDrawers :: [Int]
  18. possibleDrawers = [1 .. 50]
  19.  
  20. getDrawerContents :: [Int] -> Map.Map Int Organ -> [Maybe Organ]
  21. getDrawerContents ids catalog = map getContents ids
  22. where getContents = \id -> Map.lookup id catalog
  23.  
  24. availableOrgans :: [Maybe Organ]
  25. availableOrgans = getDrawerContents possibleDrawers organCatalog
  26.  
  27. countOrgan :: Organ -> [Maybe Organ] -> Int
  28. countOrgan organ available = length (filter (\x -> x == Just organ) available)
  29.  
  30. isSomething :: Maybe Organ -> Bool
  31. isSomething Nothing = False
  32. isSomething (Just _) = True
  33.  
  34. justTheOrgans :: [Maybe Organ]
  35. justTheOrgans = filter isSomething availableOrgans
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement