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 YYYYMMDD
s, 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-20100101
wydajność 365
i 33320229 17000101
wydajność 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 bonus
jest to 1.
- Jeśli Twój kod działa niezależnie od kolejności wejść (na przykład,
20100101,20110101
zwrotów365
lub-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
20109901
lub34720132
, 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
,20100229
lub20111131
, 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|20100202
lub2010010120100202
, 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) +1
głosów).
20040229
. : P
365*4 + 2 + 2
= 1464. Dzięki za informację!