Ще одна проблема маніпулювання датою: P
Завдання
Напишіть програму або функцію, яка обчислює різницю між двома датами, заданими користувачем.
Введення-виведення
Подібно до попереднього , входи - це два YYYYMMDD
s, розділені пробілом , комою
,
чи знаком мінус -
.
Приклад вхідних значень:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
Вихід - ціле число, яке відрізняється між двома датами, в днях.
Наприклад, вхідні 20110101-20100101
врожаї 365
та 33320229 17000101
врожайність 596124
.
Ви можете перевірити результати тут тут . (Див. Коментарі rintaun нижче.) Якщо дві дати однакові, програма повинна повернутися 0
, якщо дата є дійсною (див. Оцінка ).
Обмеження
Звичайно, ви не повинні використовувати будь-які види функції / класу / ..., які пов'язані з часовою позначкою або датою, і ви повинні використовувати григоріанський каландр .
Оцінка
Якщо ваш код не зберігає обмеження, то score = -∞
.
За замовчуванням bonus
- 1.
- Якщо ваш код працює незалежно від порядку введення (наприклад,
20100101,20110101
повернення365
або-365
)bonus+=1
,. - Якщо ваш код може працювати з 0 року ,
bonus+=0.5
. - Якщо ваш код визнає недійсним місяць (між 1 ~ 12) / датою (між 1 ~ 31), як-от
20109901
або34720132
, і друкуєE
(& припиняє програму або повертає щось на зразок0
)bonus+=1
,. - Незалежно від вищезазначеного правила, якщо ваш код розпізнає недійсні дати, наприклад
20100230
,20100229
або20111131
, та друкуєE
(& припиняє програму або повертає щось на зразок0
)bonus+=1
,. - Незалежно від вищезазначених двох правил, якщо ваш код розпізнає недійсну рядок введення, наприклад,
20100101|20100202
або2010010120100202
, та друкуєE
(& припиняє програму або повертає щось на кшталт0
)bonus+=1
,.
score = floor(-4.2*code.length/bonus)
. Код з найвищим балом виграє. Якщо два топ-коди мають однаковий бал, коди з найвищим бонусом виграють. Якщо два топ-коди мають однаковий бал і бонус, виграють коди з найвищими голосами.
(Термін дії: Якщо існує більше 5 кодів, які мають більше (або рівних) +1
голосів.)
20040229
. : P
365*4 + 2 + 2
= 1464. Дякую за інформацію!