Introduction
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.
Instructions
Instructions
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:
- Fixed: a predefined set of words.
- Variable: words that have a variable component, but follow a predefined set of patterns.
Fixed 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 |
Variable delivery date descriptions
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:
1. January/February/March
2. April/May/June
3. July/August/September
4. October/November/December.
Source: Exercism elixir/swift-scheduling