Probabilmente hai visto questi segni sulle porte di vari negozi:
ORARI DI APERTURA
lun -ven 0900-1800 sab-dom 1100-1530
Il compito qui è generare un segno del genere, raggruppando giorni consecutivi con gli stessi orari di apertura, da un elenco di orari di apertura per l'intera settimana. Si noti che la settimana "si svolge" per ciò che è considerato consecutivo.
Ingresso:
- 7 elementi, che rappresentano gli orari di apertura di ogni giorno in una settimana, a partire dal lunedì.
- Ogni elemento è una stringa, nella forma XXXX-XXXX
Esempio di input:
0900-1800 0900-1800 0930-1730 0930-1730 0900-1500 1100-1500 1100-1500- Va bene inviare l'input come un array (ad esempio come input per una funzione se non si legge da stdin)
Produzione:
- Un elenco di orari di apertura, in cui i giorni consecutivi con gli stessi orari di apertura vengono visualizzati come intervallo. Nota che domenica (l'ultimo giorno) e lunedì (il primo giorno) sono giorni consecutivi.
- Un giorno in cui il giorno non ha orari di apertura simili ai giorni precedenti o successivi viene stampato da solo
- I giorni sono indicati con tre lettere minuscole: lun mar mer gio ven sab dom
- Ricorda che il primo elemento nell'input corrisponde a mon, accanto a tue ecc.
- Gli orari di apertura sono indicati come nell'input
Due esempi
mon-fri 0900-1800, sat-sun 1100-1500 mon-wed 1030-1530, thu 100-1800, fri-sun 1200-1630L'output deve essere ordinato, quindi gli intervalli vengono visualizzati nell'ordine in cui compaiono i giorni della settimana. Il lunedì è preferito essere il primo, ma può succedere che non sia il primo di un gruppo perché la settimana finisce. Quindi in questo caso la tua è la prima gamma.
tue-fri 0900-1800, sat-mon 1100-1500Non raggruppare se non consecutivi, qui mercoledì e venerdì hanno gli stessi orari di apertura ma sono separati da un giovedì con orari di apertura diversi, quindi sono elencati da soli.
mon-tue 1000-1200, wed 0900-1500, thu 1000-1800, fri 0900-1500, sat-sun 1000-1500- L'output può essere separato da virgola come nell'esempio qui oppure separato da una nuova riga come nell'esempio in alto.
Casi test
Viene immessa la prima riga, è prevista l'uscita della seconda riga
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
Regole
Questo è code-golf, quindi vince la risposta più breve in byte.