Для григоріанських календарів формат дат відрізняється від країни до іншої. Визнано три основні формати:
YY-MM-DD
(біг-ендіан)DD-MM-YY
(малопомітний)MM-DD-YY
(середній-ендіанський)
Ваше завдання - написати програму, яка, задавши рядок введення, що представляє дату, виводить усі можливі формати дати, за допомогою яких цей рядок можна інтерпретувати як дату.
Правила
- Дата введення у форматі
xx-xx-xx
, де кожне поле має дві цифри та нульове значення. - Дата завжди дійсна (тому ви не можете отримати такі речі, як 14-13-17)
- Дата завжди є хоча б одним із форматів вище (тому ви не можете отримати такі речі, як 17-14-11)
- Оскільки ми насправді перебуваємо в паралельному світі, щомісяця в році є 31 день , а отже, немає високосних років
- Дата між 01 січня 2001 року та 31 грудня 2099 року
- Якщо на дату є лише один формат, код повинен надрукувати лише його (дозволені лише проміжні нові рядки)
- Якщо для дати є кілька форматів, вони повинні бути розділені комою, пробілом, новим рядком або комбінацією цих
- Ви повинні вивести точну назву формату (форматів). Використання різних довільних значень заборонено.
- Не допускаються жодні провідні або кінцеві символи, окрім місця пробілу
- Вихід повинен бути малий
- Вам заборонено використовувати будь-які вбудовані функції дати чи календаря
- Вихідні формати не потрібно сортувати
Приклади
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
Це код-гольф, тому найкоротший код у байтах виграє. Пояснення заохочуються.
there are 31 days for every month of the year, and consequently no leap years
То це означає, що будь-яка бібліотека дат тоді для цього ефективно марна?