diff --git a/Haskell/p019.hs b/Haskell/p019.hs new file mode 100644 index 0000000..ec585ff --- /dev/null +++ b/Haskell/p019.hs @@ -0,0 +1,25 @@ +-- You are given the following information, but you may prefer to do some research for yourself. +-- +-- 1 Jan 1900 was a Monday. +-- Thirty days has September, +-- April, June and November. +-- All the rest have thirty-one, +-- Saving February alone, +-- Which has twenty-eight, rain or shine. +-- And on leap years, twenty-nine. +-- A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400. +-- +-- How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)? + +import Data.Time.Calendar + +countSundaysFirst :: Day -> Day -> Int +countSundaysFirst start end = let days = [start .. end] + in length $ filter (\x -> dayOfWeek x == Sunday && [last (init (show x)), last (show x)] == "01") days + +main = do + let startDate = fromGregorian 1901 1 1 + endDate = fromGregorian 2000 12 31 + result = countSundaysFirst startDate endDate + putStrLn $ "Project Euler, Problem 19\n" + ++ "Answer: " ++ show result