Étant donné une liste d'activités et leur date / heure de début, sortez un calendrier ASCII-art montrant les activités les jours appropriés. Toutes les activités sont garanties pour être dans le même mois, il n'y aura pas deux activités le même jour, et toutes les activités sont garanties pour s'inscrire dans la boîte de calendrier.
Le calendrier a la date dans le coin supérieur gauche de chaque boîte, les boîtes font 9 espaces de large sur 5 espaces de haut, entourées de -
et |
. L'abréviation à deux lettres du jour de la semaine est centrée au-dessus de la première ligne et les semaines commencent par le dimanche.
Par exemple, compte tenu des activités suivantes:
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
Sortez ce calendrier correspondant:
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 | | | |
| | | | | | | |
-----------------------------------------------------------------------
Clarifications
- Les mots de planification (correspondant à [A-Za-z] +) seront délimités par un seul espace entre eux (comme dans l'exemple).
- Le fractionnement du texte sur les limites des mots est suffisant. Pas besoin de couper les mots.
- Si février commence un dimanche d'une année non bissextile, vous n'aurez que quatre lignes de calendrier.
- Si un mois de 31 jours (par exemple, août) commence tard dans la semaine, vous devrez peut-être afficher six lignes de calendrier.
E / S et règles
- Votre code doit gérer les dates au moins entre
0001-01-01
et9999-12-31
dans le calendrier grégorien, y compris les années bissextiles, le cas échéant. Par exemple, si une entrée est donnée2016-02-13 9:00am Test
, le calendrier de sortie doit avoir le 29 février. - Le format de date d'entrée peut être dans n'importe quel format souhaité. ISO 8601, un
datetime
objet, une chaîne particulièrement formatée, etc. L'analyse syntaxique d'entrée n'est pas la partie intéressante de ce défi. - L'entrée et la sortie peuvent se faire par n'importe quelle méthode pratique .
- Les sauts de ligne de début / fin ou d'autres espaces sont facultatifs, à condition que les caractères s'alignent correctement.
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- La sortie peut être vers la console, retournée sous forme de liste de chaînes, retournée sous forme de chaîne unique, etc.
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
1752-09-02 - 09:00am - Wife's Birthday Tomorrow (14th!)