给定活动列表及其开始时间/日期,请输出一个ASCII艺术日历,显示相应日期的活动。保证所有活动都在同一个月内进行,没有两个活动可以在同一天进行,并且保证所有活动都可以放在日历框中。
日历的日期在每个框的左上角,这些框宽9乘5高,由-
和包围|
。星期几的两个字母的缩写位于第一行的上方,而星期几则从星期日开始。
例如,给定以下活动:
10/5/2018 - 9:00am - Sandbox calendar challenge
10/9/2018 - 9:00am - Post challenge to main
10/10/2018 - 10:00am - Profit
10/31/2018 - 7:30pm - Halloween party
输出此相应的日历:
Su Mo Tu We Th Fr Sa
-----------------------------------------------------------------------
| |1 |2 |3 |4 |5 |6 |
| | | | | |9:00am | |
| | | | | |Sandbox | |
| | | | | |calendar | |
| | | | | |challenge| |
-----------------------------------------------------------------------
|7 |8 |9 |10 |11 |12 |13 |
| | |9:00am |10:00am | | | |
| | |Post |Profit | | | |
| | |challenge| | | | |
| | |to main | | | | |
-----------------------------------------------------------------------
|14 |15 |16 |17 |18 |19 |20 |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
-----------------------------------------------------------------------
|21 |22 |23 |24 |25 |26 |27 |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
-----------------------------------------------------------------------
|28 |29 |30 |31 | | | |
| | | |7:30pm | | | |
| | | |Halloween| | | |
| | | |party | | | |
| | | | | | | |
-----------------------------------------------------------------------
澄清说明
- 调度字(匹配[A-Za-z] +)将由它们之间的单个空格分隔(如示例中所示)。
- 在单词边界上分割文本就足够了。无需连字。
- 如果2月在非le年的星期日开始,则只有4个日历行。
- 如果一个31天的月份(例如,八月)在一周中的晚些时候开始,则可能必须输出六行日历。
I / O和规则
- 您的代码必须至少处理公历之间
0001-01-01
和9999-12-31
之中的日期,包括适当的leap年。例如,如果给定input2016-02-13 9:00am Test
,则输出日历应具有2月29日。 - 输入日期格式可以是任何所需的格式。ISO 8601,
datetime
对象,格式特殊的字符串等。输入解析不是此挑战的有趣部分。 - 输入和输出可以通过任何方便的方法。
- 前导/尾随换行符或其他空格是可选的,前提是这些字符必须正确排列。
- 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。
- 输出可以发送到控制台,以字符串列表形式返回,以单个字符串形式返回,等等。
- 禁止出现标准漏洞。
- 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。
1752-09-02 - 09:00am - Wife's Birthday Tomorrow (14th!)