Напевно ви бачили ці знаки на дверях різних магазинів:
ГОДИНИ РОБОТИ
пн-пт 0900-1800
сб-нд 1100-1530
Завдання тут - створити такий знак, групуючи дні поспіль з однаковими годинами роботи, зі списку годин роботи протягом цілого тижня. Зауважте, що тиждень "обгортається" для того, що вважається послідовним.
Вхід:
- 7 елементів, що представляють години роботи кожного дня в тиждень, починаючи з понеділка.
- Кожен елемент є рядком у формі XXXX-XXXX
Приклад введення:
0900-1800 0900-1800 0930-1730 0930-1730 0900-1500 1100-1500 1100-1500- Добре надсилати вхід як масив (наприклад, як вхід до функції, якщо ви не читаєте з stdin)
Вихід:
- Перелік годин роботи, де послідовні дні з однаковими годинами роботи відображаються як діапазон. Зауважте, що неділя (останній день) та понеділок (перший день) також є днями поспіль.
- День, коли день не має подібних годин роботи до днів до або після, друкується сам
- Дні вказані у вигляді трьох малих літер: пн вт ср пт сб св
- Пам’ятайте, що перший елемент у вході відповідає пн, поруч з т. Д.
- Години роботи відображаються як на вході
Два приклади
mon-fri 0900-1800, sat-sun 1100-1500 mon-wed 1030-1530, thu 100-1800, fri-sun 1200-1630Вихід повинен бути відсортований, так що діапазони відображаються в порядку порядку днів у тиждень. Понеділок вважають за краще бути першим, але може статися, що він не перший у групі, тому що тиждень завершується. Тож у даному випадку вт є перший діапазон.
tue-fri 0900-1800, sat-mon 1100-1500Не групуйтеся, якщо не є послідовними, тут середа та п’ятниця мають однакові години роботи, але розділяються на четвер з різним часом роботи, тому вони перераховані самі.
mon-tue 1000-1200, wed 0900-1500, thu 1000-1800, fri 0900-1500, sat-sun 1000-1500- Вихід може бути або розділеним комою, як приклади тут, або розділеним новим рядком, як у прикладі зверху.
Тестові кейси
Перший рядок вводиться, другий рядок очікується вихід
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
Правила
Це код-гольф, тому найкоротша відповідь у байтах виграє.