Ein weiteres Problem bei der Datumsmanipulation: P.
Aufgabe
Schreiben Sie ein Programm oder eine Funktion, die die Differenz zwischen zwei von einem Benutzer angegebenen Daten berechnet.
Input-Output
Ähnlich wie bei der vorherigen Eingabe sind die Eingaben zwei YYYYMMDD
s, die durch ein Leerzeichen , ein Komma
,
oder ein Minuszeichen getrennt sind -
.
Beispiel für Eingabewerte:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
Die Ausgabe ist eine Ganzzahl, die die Differenz zwischen zwei Daten in Tagen darstellt.
Zum Beispiel Input- 20110101-20100101
Erträge 365
und 33320229 17000101
Erträge 596124
.
Sie können Ergebnisse testen hier hier . (Siehe die Kommentare von rintaun unten.) Wenn zwei Daten identisch sind, sollte das Programm zurückkehren 0
, wenn das Datum gültig ist (siehe Punktzahl ).
Beschränkung
Natürlich Sie müssen nicht verwenden alle Arten von Funktion / Klasse / ..., die Zeitstempel oder das Datum bezogen sind, und sollten Sie gregorianischen Kalender .
Ergebnis
Wenn Ihr Code die Einschränkung nicht einhält, dann score = -∞
.
Standard bonus
ist 1.
- Wenn Ihr Code unabhängig von der Reihenfolge der Eingaben funktioniert (z. B.
20100101,20110101
return365
oder-365
) ,bonus+=1
. - Wenn Ihr Code das Jahr 0 verarbeiten kann ,
bonus+=0.5
. - Wenn Ihr Code einen ungültigen Monat (zwischen 1 ~ 12) / Datum (zwischen 1 ~ 31) wie
20109901
oder erkennt34720132
und drucktE
(& das Programm beendet oder so etwas zurückgibt0
) ,bonus+=1
. - Unabhängig von der obigen Regel, wenn Ihr Code ungültige Daten wie
20100230
,20100229
oder oder erkennt20111131
und drucktE
(& das Programm beendet oder so etwas zurückgibt0
) ,bonus+=1
. - Unabhängig von den beiden oben genannten Regeln, wenn Ihr Code eine ungültige Eingabezeichenfolge wie
20100101|20100202
oder erkennt2010010120100202
und drucktE
(& das Programm beendet oder so etwas zurückgibt0
) ,bonus+=1
.
score = floor(-4.2*code.length/bonus)
. Code mit der höchsten Punktzahl gewinnt. Wenn zwei Top-Codes die gleiche Punktzahl haben, gewinnen Codes mit dem höchsten Bonus. Wenn zwei Top-Codes dieselbe Punktzahl und denselben Bonus haben, gewinnen Codes mit den höchsten Stimmen.
(Fällig: Wenn es mehr als 5 Codes gibt, die mehr als (oder gleiche) +1
Stimmen haben.)
20040229
. : P
365*4 + 2 + 2
= 1464. Danke für die Information!