Vous avez probablement vu ces panneaux sur les portes de divers magasins:
HORAIRES D'OUVERTURES
lun
-ven 0900-1800 sam-dim 1100-1530
La tâche ici est de générer un signe comme celui-ci, regroupant des jours consécutifs avec les mêmes heures d'ouverture, à partir d'une liste d'heures d'ouverture pour toute la semaine. Notez que la semaine «se déroule» pour ce qui est considéré comme consécutif.
Contribution:
- 7 éléments, représentant les heures d'ouverture pour chaque jour d'une semaine, à partir du lundi.
- Chaque élément est une chaîne, sous la forme XXXX-XXXX
Exemple d'entrée:
0900-1800 0900-1800 0930-1730 0930-1730 0900-1500 1100-1500 1100-1500- Il est correct d'envoyer l'entrée sous forme de tableau (par exemple en tant qu'entrée vers une fonction si vous ne lisez pas depuis stdin)
Production:
- Une liste des heures d'ouverture, où les jours consécutifs avec les mêmes heures d'ouverture sont affichés sous forme de plage. Notez que le dimanche (le dernier jour) et le lundi (le premier jour) sont également des jours consécutifs.
- Un jour où le jour n'a pas d'heures d'ouverture similaires aux jours avant ou après est imprimé seul
- Les jours sont spécifiés en trois lettres minuscules: lun mar mer jeu ven sam dim
- N'oubliez pas que le premier élément de l'entrée correspond à mon, à côté de mar, etc.
- Les heures d'ouverture sont indiquées comme dans l'entrée
Deux exemples
mon-fri 0900-1800, sat-sun 1100-1500 mon-wed 1030-1530, thu 100-1800, fri-sun 1200-1630La sortie doit être triée, les plages apparaissent donc dans l'ordre des jours de la semaine. Le lundi est préférable d'être le premier, mais il se peut que ce ne soit pas le premier dans un groupe car la semaine se termine. Donc dans ce cas, le tue est la première plage.
tue-fri 0900-1800, sat-mon 1100-1500Ne groupez pas sauf si consécutif, ici mercredi et vendredi ont les mêmes heures d'ouverture mais sont séparés par un jeudi avec des heures d'ouverture différentes donc ils sont listés par eux-mêmes.
mon-tue 1000-1200, wed 0900-1500, thu 1000-1800, fri 0900-1500, sat-sun 1000-1500- La sortie peut être soit séparée par des virgules comme les exemples ici, soit séparée par une nouvelle ligne comme dans l'exemple ci-dessus.
Cas de test
La première ligne est entrée, la deuxième ligne est attendue
0900-1800 0900-1800 0900-1800 0900-1800 0900-1800 1100-1500 1100-1500
mon-fri 0900-1800, sat-sun 1100-1500
0900-1800 0900-1800 0900-1800 0930-1700 0900-1800 1100-1500 1100-1500
mon-wed 0900-1800, thu 0930-1700, fri 0900-1800, sat-sun 1100-1500
1100-1500 0900-1800 0900-1800 0900-1800 0900-1800 1100-1500 1100-1500
tue-fri 0900-1800, sat-mon 1100-1500
1100-1500 1100-1500 0900-1800 0900-1800 0900-1800 0900-1800 1100-1500
wed-sat 0900-1800, sun-tue 1100-1500
1200-1500 1100-1500 0900-1800 0900-1800 0900-1800 0900-1800 1100-1500
mon 1200-1500, tue 1100-1500, wed-sat 0900-1800, sun 1100-1500
Règles
Il s'agit de code-golf, donc la réponse la plus courte en octets l'emporte.