Un autre problème de manipulation de date: P
Tâche
Écrivez un programme ou une fonction qui calcule la différence entre deux dates données par un utilisateur.
Entrée sortie
Semblable à la précédente , les entrées sont deux YYYYMMDD
s, séparées par un espace , une virgule
,
ou un signe moins -
.
Exemple de valeurs d'entrée:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
La sortie est un entier, qui est la différence entre deux dates, en jours.
Par exemple, les 20110101-20100101
rendements des intrants 365
et les 33320229 17000101
rendements 596124
.
Vous pouvez tester les résultats ici ici . (Voir les commentaires de rintaun ci-dessous.) Si deux dates sont identiques, le programme devrait revenir 0
, si la date est valide (voir Score ).
Restriction
Bien sûr, vous ne devez utiliser aucun type de fonction / classe / ... lié à l'horodatage ou à la date, et vous devez utiliser le calendrier grégorien .
But
Si votre code ne respecte pas la restriction, alors score = -∞
.
La valeur par défaut bonus
est 1.
- Si votre code fonctionne quel que soit l'ordre des entrées (par exemple,
20100101,20110101
retourne365
ou-365
)bonus+=1
,. - Si votre code peut gérer l' année 0 ,
bonus+=0.5
. - Si votre code reconnaît un mois non valide (entre 1 ~ 12) / date (entre 1 ~ 31), comme
20109901
ou34720132
, et s'imprimeE
(& termine le programme ou renvoie quelque chose comme0
)bonus+=1
,. - Indépendamment de la règle ci-dessus, si votre code reconnaît des dates non valides, comme
20100230
,20100229
ou20111131
, et s'imprimeE
(& termine le programme ou renvoie quelque chose comme0
)bonus+=1
,. - Indépendamment des deux règles ci-dessus, si votre code reconnaît une chaîne d'entrée non valide, comme
20100101|20100202
ou2010010120100202
, et s'imprimeE
(& termine le programme ou renvoie quelque chose comme0
)bonus+=1
,.
score = floor(-4.2*code.length/bonus)
. Le code avec le score le plus élevé gagne. Si deux codes supérieurs ont le même score, alors les codes avec les gains de bonus les plus élevés. Si deux codes supérieurs ont à la fois le même score et le même bonus, alors les codes avec les votes les plus élevés l'emportent.
(En raison: lorsqu'il y a plus de 5 codes qui ont plus de +1
votes (ou égaux) .)
20040229
. : P
365*4 + 2 + 2
= 1464. Merci pour l'information!