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 YYYYMMDDs, 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-20100101rendements des intrants 365et les 33320229 17000101rendements 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 bonusest 1.
- Si votre code fonctionne quel que soit l'ordre des entrées (par exemple,
20100101,20110101retourne365ou-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
20109901ou34720132, 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,20100229ou20111131, 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|20100202ou2010010120100202, 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 +1votes (ou égaux) .)
20040229. : P
365*4 + 2 + 2= 1464. Merci pour l'information!