Для григорианских календарей формат даты варьируется от страны к стране. Существует три основных формата:
YY-MM-DD
(Большой обратный порядок байт)DD-MM-YY
(Прямой порядок байтов)MM-DD-YY
(Средний порядок байт)
Ваша задача - написать программу, которая с учетом входной строки, представляющей дату, выведет все возможные форматы даты, по которым эту строку можно интерпретировать как дату.
правила
- Дата ввода указывается в формате
xx-xx-xx
, где каждое поле состоит из двух цифр и дополняется нулями. - Дата всегда действительна (поэтому вы не можете получить такие вещи, как 14-13-17)
- Дата всегда соответствует как минимум одному из указанных выше форматов (поэтому вы не можете получить такие вещи, как 17-14-11)
- Поскольку мы на самом деле в параллельном мире, на каждый месяц года выделяется 31 день , и, следовательно, нет високосных лет.
- Дата между 1 января 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
Таким образом, это означает, что любая библиотека дат фактически бесполезна для этого?