Un altro problema di manipolazione della data: P
Compito
Scrivi un programma o una funzione che calcola la differenza tra due date fornite da un utente.
Input Output
Simile al precedente , gli input sono due YYYYMMDDs, separati da uno spazio , una virgola ,o un segno meno -.
Esempio di valori di input:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
L'output è un numero intero, che è la differenza tra due date, in giorni.
Ad esempio, i 20110101-20100101rendimenti di input 365e i 33320229 17000101rendimenti 596124.
Puoi testare i risultati qui qui . (Vedi i commenti di rintaun di seguito.) Se due date sono uguali, il programma dovrebbe tornare 0, se la data è valida (vedi Punteggio ).
Restrizione
Naturalmente, non è necessario utilizzare alcun tipo di funzione / classe / ... correlati a data / ora e data e si dovrebbe usare il calendario gregoriano .
Punto
Se il tuo codice non mantiene la restrizione, allora score = -∞.
L'impostazione predefinita bonusè 1.
- Se il codice funziona indipendentemente dall'ordine degli input (ad esempio,
20100101,20110101resi365o-365)bonus+=1,. - Se il codice in grado di gestire l'anno 0 ,
bonus+=0.5. - Se il tuo codice riconosce un mese non valido (tra 1 ~ 12) / data (tra 1 ~ 31), mi piace
20109901o34720132, e stampaE(e termina il programma o restituisce qualcosa di simile0)bonus+=1,. - Indipendentemente dalla regola di cui sopra, se il codice riconosce date non valide, come
20100230,20100229, o20111131, e le stampeE(e termina il programma o ritorna qualcosa di simile0),bonus+=1. - Indipendentemente dalle due regole precedenti, se il tuo codice riconosce una stringa di input non valida, come
20100101|20100202o2010010120100202, e stampaE(e termina il programma o restituisce qualcosa di simile0)bonus+=1,.
score = floor(-4.2*code.length/bonus). Il codice con il punteggio più alto vince. Se due codici principali hanno lo stesso punteggio, vincono i codici con il bonus più alto. Se due codici principali hanno lo stesso punteggio e bonus, vincono i codici con il punteggio più alto.
(Scaduto: quando ci sono più di 5 codici con più di (o uguali) +1voti.)
20040229. : P
365*4 + 2 + 2= 1464. Grazie per l'informazione!