Kolejny problem z manipulowaniem datami: P
Zadanie
Napisz program lub funkcję, która oblicza różnicę między dwiema datami podanymi przez użytkownika.
Wejście wyjście
Podobnie jak poprzedni , dane wejściowe to dwa YYYYMMDDs, oddzielone spacją , przecinkiem ,lub znakiem minus -.
Przykład wartości wejściowych:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
Dane wyjściowe to liczba całkowita, która stanowi różnicę między dwiema datami w dniach.
Na przykład: 20110101-20100101wydajność 365i 33320229 17000101wydajność 596124.
Możesz przetestować wyniki tutaj co tutaj . (Zobacz komentarze rintaun poniżej.) Jeśli dwie daty są takie same, program powinien powrócić 0, jeśli data jest prawidłowa (patrz punktacja ).
Ograniczenie
Oczywiście nie wolno używać żadnych funkcji / klas / ..., które są związane ze znacznikiem czasu lub datą, i należy używać kalendarza gregoriańskiego .
Wynik
Jeśli twój kod nie zachowuje ograniczenia, to score = -∞.
Domyślnie bonusjest to 1.
- Jeśli Twój kod działa niezależnie od kolejności wejść (na przykład,
20100101,20110101zwrotów365lub-365)bonus+=1. - Jeśli Twój kod może obsługiwać roku 0 ,
bonus+=0.5. - Jeśli kod rozpozna nieprawidłowy miesiąc (od 1 do 12) / datę (od 1 do 31), polub
20109901lub34720132, i wydrukujeE(i zakończy działanie programu lub zwróci coś w rodzaju0)bonus+=1,. - Niezależnie od powyższej zasady, jeśli kod rozpozna nieprawidłowe daty, takie jak
20100230,20100229lub20111131, i drukujeE(i kończy działanie programu lub zwraca coś takiego0)bonus+=1,. - Niezależnie od powyższych dwóch zasad, jeśli kod rozpozna nieprawidłowy ciąg wejściowy, taki jak
20100101|20100202lub2010010120100202, i drukujeE(i kończy działanie programu lub zwraca coś takiego0)bonus+=1,.
score = floor(-4.2*code.length/bonus). Wygrywa kod z najwyższym wynikiem. Jeśli dwa najlepsze kody mają taki sam wynik, wygrywają kody z najwyższym bonusem. Jeśli dwa najlepsze kody mają zarówno ten sam wynik, jak i bonus, wygrywają kody z najwyższą liczbą głosów.
(Due: Gdy jest więcej niż 5 kodów, które mają więcej niż (lub równe) +1głosów).
20040229. : P
365*4 + 2 + 2= 1464. Dzięki za informację!