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 YYYYMMDDs, 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-20100101Erträge 365und 33320229 17000101Erträ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 bonusist 1.
- Wenn Ihr Code unabhängig von der Reihenfolge der Eingaben funktioniert (z. B.
20100101,20110101return365oder-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
20109901oder erkennt34720132und 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,20100229oder oder erkennt20111131und 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|20100202oder erkennt2010010120100202und 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) +1Stimmen haben.)
20040229. : P
365*4 + 2 + 2= 1464. Danke für die Information!