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