Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
50 lines (32 sloc) 1.56 KB
module Y2016.M11.D21.Solution where
import Data.Time
import Data.Time.Clock
Let's say you've joined the National November Writing Month challenge to write
a novel of 50,000 words during the month of November. Let's say you've ...
'kinda' started that novel, and it's here in this directory at foo.txt or at
the URL:
And let's say today is today, and the novel of at least 50,000 words is due by
the end of the month, because I love deadlines: I love the sound they make as
they whoosh by!
Douglas Adams.
So, today's Haskell exercise.
1) how many words are in this novel so far
wordCount :: FilePath -> IO WordsWritten
wordCount = fmap (length . words) . readFile
-- *Y2016.M11.D21.Solution> wordCount "Y2016/M11/D21/foo.txt" ~> 1798
-- 2) How many days until the deadline, the end of the month
daysLeft :: IO DaysLeft -- from 'today.' Where today is defined as today.
daysLeft = fmap (diffDays (read "2016-12-01") . utctDay) getCurrentTime
-- *Y2016.M11.D21.Solution> daysLeft ~> 10 days left?!? ERMIGOSH!
-- 3) How many words per day must be written to complete the novel (or at least
-- the first 50,000 words of it) in the time remaining?
type DaysLeft = Integer
type WordsPerDay = Integer
type WordsWritten = Int
wordsPerDay :: DaysLeft -> WordsWritten -> WordsPerDay
wordsPerDay daysLeft = (`div` daysLeft) . fromIntegral . (50000 -)
-- *Y2016.M11.D21.Solution> wordsPerDay 10 1798 ~> 4820
-- SOMEbody has to write 5k words per day to complete #NaNoWriMo2016. *glares*
You can’t perform that action at this time.