Na mojej stronie użytkownicy wpisują datę urodzenia zgodnie ze stylem xx.xx.xx
- trzy dwucyfrowe liczby oddzielone kropkami. Niestety zapomniałem powiedzieć użytkownikom, jakiego formatu użyć. Wiem tylko, że jedna sekcja jest używana dla miesiąca, jedna dla daty, a druga dla roku. Rok jest zdecydowanie w XX wieku (1900-1999), więc format 31.05.75
oznacza 31 May 1975
. Zakładam też, że wszyscy używają kalendarza gregoriańskiego lub kalendarza juliańskiego.
Teraz chcę przejrzeć moją bazę danych, aby usunąć bałagan. Chciałbym zacząć od kontaktu z użytkownikami z najbardziej niejednoznacznymi datami, czyli tymi, w których zakres możliwych dat jest największy.
Na przykład data 08.27.53
oznacza 27 August 1953
w kalendarzu gregoriańskim lub juliańskim. Data w kalendarzu juliańskim to 13 dni później, więc zakres jest sprawiedliwy 13 days
.
Natomiast notacja 01.05.12
może odnosić się do wielu możliwych dat. Najwcześniejsza jest 12 May 1901 (Gregorian)
, a najnowsza jest 1 May 1912 (Julian)
. Zakres wynosi 4020 days
.
Zasady
- Dane wejściowe to ciąg znaków w formacie
xx.xx.xx
, w którym każde pole składa się z dwóch cyfr i jest uzupełnione zerami. - Dane wyjściowe to liczba dni w zakresie.
- Możesz założyć, że dane wejściowe zawsze będą prawidłową datą.
- Nie możesz używać żadnych wbudowanych funkcji daty ani kalendarza.
- Najkrótszy kod (w bajtach) wygrywa.
Przypadki testowe
01.00.31
=>12
29.00.02
=>0
(Jedyną możliwością jest29 February 1900 (Julian)
)04.30.00
=>13
06.12.15
=>3291
5, May 1975
powinno być31st
? Czy też musimy brać pod uwagę lata przestępne?