This week, it is your turn to take notes in the department's planning meeting. In this meeting, your boss will set delivery dates for all open work items. Annoyingly, instead of specifying the actual delivery dates, your boss will only describe them in an abbreviated format. As many of your colleagues won't be familiar with this corporate lingo, you'll need to convert these delivery date descriptions to actual delivery dates.
Your task is to convert delivery date descriptions to actual delivery dates, based on when the meeting started.
There are two types of delivery date descriptions:
There are three fixed delivery date descriptions:
"NOW"
"ASAP"
(As Soon As Possible)"EOW"
(End Of Week)The following table shows how to translate them:
Description | Meeting start | Delivery date |
---|---|---|
"NOW" |
- | Two hours after the meeting started |
"ASAP" |
Before 13:00 | Today at 17:00 |
"ASAP" |
After or at 13:00 | Tomorrow at 13:00 |
"EOW" |
Monday, Tuesday, or Wednesday | Friday at 17:00 |
"EOW" |
Thursday or Friday | Sunday at 20:00 |
There are two variable delivery date description patterns:
"<N>M"
(N-th month)"Q<N>"
(N-th quarter)Description | Meeting start | Delivery date |
---|---|---|
"<N>M" |
Before N-th month | At 8:00 on the first workday¹ of this year's N-th month |
"<N>M" |
After or in N-th month | At 8:00 on the first workday¹ of next year's N-th month |
"Q<N>" |
Before or in N-th quarter² | At 8:00 on the last workday¹ of this year's N-th quarter² |
"Q<N>" |
After N-th quarter² | At 8:00 on the last workday¹ of next year's N-th quarter² |
¹ A workday is a Monday, Tuesday, Wednesday, Thursday, or Friday. ² A year has four quarters, each with three months: January/February/March, April/May/June, July/August/September, and October/November/December.
elm/time
is meant to display a time provided by the browser, not to manipulate dates and times.
In real world applications, one would reach out to packages from the Elm community to manipulate dates and times, but since those are not accessible in the online editor, take this exercise as a challenge rather than as a practice of idiomatic Elm.
Sign up to Exercism to learn and master Elm with 25 concepts, 97 exercises, and real human mentoring, all for free.