Probablemente haya visto estas señales en las puertas de varias tiendas:
HORARIO DE APERTURA
lunes-viernes 0900-1800
sábado- domingo 1100-1530
La tarea aquí es generar un signo como ese, agrupando días consecutivos con el mismo horario de apertura, a partir de una lista de horarios de apertura para toda la semana. Tenga en cuenta que la semana se "ajusta" a lo que se considera consecutivo.
Entrada:
- 7 elementos, que representan el horario de apertura de cada día de una semana, comenzando con el lunes.
- Cada elemento es una cadena, en el formulario XXXX-XXXX
Entrada de ejemplo:
0900-1800 0900-1800 0930-1730 0930-1730 0900-1500 1100-1500 1100-1500
- Está bien enviar la entrada como una matriz (por ejemplo, como entrada a una función si no lee desde stdin)
Salida:
- Una lista de horas de apertura, donde los días consecutivos con las mismas horas de apertura se muestran como un rango. Tenga en cuenta que el domingo (el último día) y el lunes (el primer día) también son días consecutivos.
- Un día donde el día no tiene horarios de apertura similares a los días anteriores o posteriores se imprime solo
- Los días se especifican en tres letras minúsculas: lun mar mié jue vie sáb dom
- Recuerde que el primer elemento en la entrada corresponde a mon, al lado de tue, etc.
- Los horarios de apertura se muestran como en la entrada
Dos ejemplos
mon-fri 0900-1800, sat-sun 1100-1500 mon-wed 1030-1530, thu 100-1800, fri-sun 1200-1630
La salida debe ordenarse, de modo que los rangos aparezcan en el orden en que lo hacen los días de la semana. Se prefiere que el lunes sea el primero, pero puede suceder que no sea el primero en un grupo porque la semana termina. En este caso, tue es el primer rango.
tue-fri 0900-1800, sat-mon 1100-1500
No se agrupe a menos que sean consecutivos, aquí el miércoles y el viernes tienen el mismo horario de apertura, pero están separados por un jueves con diferentes horarios de apertura, por lo que se enumeran por sí mismos.
mon-tue 1000-1200, wed 0900-1500, thu 1000-1800, fri 0900-1500, sat-sun 1000-1500
- La salida puede estar separada por comas como los ejemplos aquí, o separada por una nueva línea como en el ejemplo de arriba.
Casos de prueba
La primera línea es entrada, la segunda línea es salida esperada
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
Reglas
Este es el código de golf, por lo que gana la respuesta más corta en bytes.