Sie haben wahrscheinlich diese Schilder an den Türen verschiedener Geschäfte gesehen:
ÖFFNUNGSZEITEN
Mo
-Fr 9.00-18.00 Uhr Sa -So 11.00-15.30 Uhr
Die Aufgabe hier ist es, ein solches Zeichen zu generieren, das aufeinanderfolgende Tage mit denselben Öffnungszeiten aus einer Liste von Öffnungszeiten für die ganze Woche gruppiert. Beachten Sie, dass die Woche für das, was als aufeinanderfolgend angesehen wird, "umläuft".
Eingang:
- 7 Elemente, die die Öffnungszeiten für jeden Tag in einer Woche darstellen, beginnend mit Montag.
- Jedes Element ist eine Zeichenfolge in der Form XXXX-XXXX
Beispiel Eingabe:
0900-1800 0900-1800 0930-1730 0930-1730 0900-1500 1100-1500 1100-1500- Es ist in Ordnung, die Eingabe als Array zu senden (zum Beispiel als Eingabe für eine Funktion, wenn Sie nicht aus stdin lesen).
Ausgabe:
- Eine Liste der Öffnungszeiten, wobei aufeinanderfolgende Tage mit denselben Öffnungszeiten als Bereich angezeigt werden. Beachten Sie, dass Sonntag (letzter Tag) und Montag (erster Tag) auch aufeinanderfolgende Tage sind.
- Ein Tag, an dem der Tag keine ähnlichen Öffnungszeiten wie die Tage davor oder danach hat, wird von selbst gedruckt
- Tage werden in drei Kleinbuchstaben angegeben: Mo Di Mi Do Fr Sa So
- Denken Sie daran, dass das erste Element in der Eingabe mon, neben tue usw. entspricht.
- Öffnungszeiten werden wie in der Eingabe angezeigt
Zwei Beispiele
mon-fri 0900-1800, sat-sun 1100-1500 mon-wed 1030-1530, thu 100-1800, fri-sun 1200-1630Die Ausgabe sollte sortiert sein, damit Bereiche in der Reihenfolge angezeigt werden, in der die Tage in der Woche liegen. Montag ist der erste Tag, aber es kann vorkommen, dass er nicht der erste in einer Gruppe ist, weil die Woche vorüber ist. In diesem Fall ist Di der erste Bereich.
tue-fri 0900-1800, sat-mon 1100-1500Keine Gruppe, es sei denn, dies ist aufeinanderfolgend. Hier haben Mittwoch und Freitag die gleichen Öffnungszeiten, sind jedoch durch einen Donnerstag mit unterschiedlichen Öffnungszeiten getrennt, sodass sie für sich aufgelistet sind.
mon-tue 1000-1200, wed 0900-1500, thu 1000-1800, fri 0900-1500, sat-sun 1000-1500- Die Ausgabe kann hier entweder durch Kommas oder durch eine neue Zeile wie im obigen Beispiel getrennt werden.
Testfälle
Erste Zeile wird eingegeben, zweite Zeile wird ausgegeben
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
Regeln
Das ist Code-Golf, also gewinnt die kürzeste Antwort in Bytes.