Bei Gregorianischen Kalendern variiert das Datumsformat von Land zu Land. Es werden drei Hauptformate erkannt:
YY-MM-DD
(Big-Endian)DD-MM-YY
(Little-Endian)MM-DD-YY
(Middle-Endian)
Ihre Aufgabe ist es, ein Programm zu schreiben, das bei einer Eingabezeichenfolge, die ein Datum darstellt, alle möglichen Datumsformate ausgibt, mit denen diese Zeichenfolge als Datum interpretiert werden kann.
Regeln
- Das Eingabedatum hat das Format
xx-xx-xx
, in dem jedes Feld zweistellig und mit Nullen aufgefüllt ist. - Das Datum ist immer gültig (so dass Sie Dinge wie 14-13-17 nicht bekommen können)
- Das Datum ist immer mindestens eines der oben genannten Formate (Sie können also keine Dinge wie 17-14-11 erhalten).
- Da wir uns tatsächlich in einer Parallelwelt befinden, gibt es 31 Tage für jeden Monat des Jahres und folglich keine Schaltjahre
- Das Datum liegt zwischen dem 01. Januar 2001 und dem 31. Dezember 2099
- Wenn es nur ein Format für das Datum gibt, darf der Code nur dieses drucken (nur nachgestellte Zeilenumbrüche sind zulässig).
- Wenn es für das Datum mehrere Formate gibt, müssen diese entweder durch ein Komma, ein Leerzeichen, eine neue Zeile oder eine Kombination davon getrennt werden
- Sie müssen die genauen Namen der Formate ausgeben. Die Verwendung unterschiedlicher beliebiger Werte ist nicht zulässig.
- Es sind keine führenden oder nachfolgenden Zeichen außer einem nachgestellten Leerzeichen zulässig
- Die Ausgabe muss in Kleinbuchstaben erfolgen
- Sie dürfen keine integrierten Datums- oder Kalenderfunktionen verwenden
- Die Ausgabeformate müssen nicht sortiert werden
Beispiele
Input Output
30-05-17 big-endian, little-endian
05-15-11 middle-endian
99-01-02 big-endian
12-11-31 big-endian, little-endian, middle-endian
02-31-33 middle-endian
Dies ist Code-Golf, also gewinnt der kürzeste Code in Bytes. Erklärungen sind erwünscht.
there are 31 days for every month of the year, and consequently no leap years
Das heißt also, dass jede Datumsbibliothek dafür effektiv nutzlos ist?