Ще одна проблема маніпулювання датою: P
Завдання
Напишіть програму або функцію, яка обчислює різницю між двома датами, заданими користувачем.
Введення-виведення
Подібно до попереднього , входи - це два YYYYMMDDs, розділені пробілом , комою ,чи знаком мінус -.
Приклад вхідних значень:
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. Дякую за інформацію!