Advertisement
Guest User

Untitled

a guest
Sep 24th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. import Data.Maybe(fromJust)
  2.  
  3. -- Voorgedefinieerde tabellen
  4. maandgetal = [0,3,3,6,1,4,6,2,5,0,3,5]
  5. jaargetal = [0,1,2,3,5,6,0,1,3,4,5,6,1,2,3,4,6,0,1,2,4,5,6,0,2,3,4,5]
  6. eeuwgetal = [ (15,0),(19,0),(23,0),(16,6),(20,6),(24,6),(17,4),(21,4),
  7. (25,4),(18,2),(22,2),(26,2)]
  8. weekdagen = ["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]
  9.  
  10. -- Geef het maandgetal terug uit de tabel
  11. zoekMaandgetal :: Int -> Int
  12. zoekMaandgetal m = maandgetal !! m
  13. -- Geef het jaargetal terug uit de tabel
  14. zoekJaargetal :: Int -> Int
  15. zoekJaargetal n = jaargetal !! mod n 28
  16. -- Geef het eeuwgetal terug uit de tabel
  17. zoekEeuwgetal :: Int -> Int
  18. zoekEeuwgetal n = fromJust $ lookup n eeuwgetal
  19. -- Pas op voor negatieve indexen
  20. zoekWeekdag :: Int -> [String] -> String
  21. zoekWeekdag x l = l !! mod (mod x 7 + 7) 7
  22. -- Geef terug of een jaar een schrikkeljaar is of niet
  23. schrikkeljaar :: Int -> Bool
  24. schrikkeljaar j | mod j 400 == 0 = True
  25. | mod j 100 == 0 = False
  26. | otherwise = mod j 4 == 0
  27.  
  28. -- Bereken de weekdag
  29. weekdag :: Int -> Int -> Int -> Int -> Int
  30. weekdag d m e j = mod (zonderCorrectie + correctie) 7
  31. where zonderCorrectie = d + zoekMaandgetal m + zoekEeuwgetal e + zoekJaargetal j
  32. correctie = if schrikkeljaar (100 * e * j) && m <= 2 then -1 else 0
  33. -- Gegeven de eeuw en het jaar geef de
  34. -- weekdag waarop valentijn valt dat jaar.
  35. valentijn :: Int -> Int -> String
  36. valentijn eeuw jaar = zoekWeekdag (weekdag 14 2 eeuw jaar) weekdagen
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement