Dada una lista de actividades y su fecha / hora de inicio, elabore un calendario de arte ASCII que muestre las actividades en los días apropiados. Se garantiza que todas las actividades se realizarán en el mismo mes, no habrá dos actividades el mismo día, y se garantiza que todas las actividades encajan en el cuadro del calendario.
El calendario tiene la fecha en la esquina superior izquierda de cada cuadro, los cuadros tienen 9 espacios de ancho por 5 espacios de alto, rodeados por -
y |
. La abreviatura de dos letras para el día de la semana está centrada sobre la primera fila, y las semanas comienzan con el domingo.
Por ejemplo, dadas las siguientes actividades:
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
Salida de este calendario correspondiente:
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 | | | |
| | | | | | | |
-----------------------------------------------------------------------
Aclaraciones
- Las palabras de programación (que coinciden con [A-Za-z] +) se delimitarán con un solo espacio entre ellas (como en el ejemplo).
- Dividir el texto en límites de palabras es suficiente. No hay necesidad de separar palabras.
- Si febrero comienza un domingo en un año no bisiesto, solo tendrá cuatro filas de calendario.
- Si un mes de 31 días (por ejemplo, agosto) comienza tarde en la semana, es posible que deba generar seis filas de calendario.
E / S y reglas
- Su código debe manejar fechas al menos entre
0001-01-01
y9999-12-31
en el calendario gregoriano, incluidos los años bisiestos, según corresponda. Por ejemplo, si se le da entrada2016-02-13 9:00am Test
, el calendario de salida debería tener el 29 de febrero. - El formato de fecha de entrada puede estar en cualquier formato deseado. ISO 8601, un
datetime
objeto, una cadena con un formato particular, etc. El análisis de entrada no es la parte interesante de este desafío. - La entrada y salida pueden ser por cualquier método conveniente .
- Las nuevas líneas iniciales / finales u otros espacios en blanco son opcionales, siempre que los caracteres se alineen adecuadamente.
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- La salida puede ser a la consola, devuelta como una lista de cadenas, devuelta como una sola cadena, etc.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
1752-09-02 - 09:00am - Wife's Birthday Tomorrow (14th!)