另一个日期处理问题:P
任务
编写一个程序或函数来计算用户给定的两个日期之间的差。
输入输出
与上一个输入类似,输入为2 YYYYMMDD,以空格,逗号,或减号分隔-。
输入值示例:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
输出是一个整数,它是两个日期之间的差,以天为单位。
例如,输入20110101-20100101yields 365和33320229 17000101yields 596124。
您可以测试结果 在这里 在这里。(请参阅下面的rintaun注释。)如果两个日期相同0,则该日期应该是有效的(请参见Score)。
限制
当然,你必须不能使用任何 / ......这些都与时间戳或日期类型的函数/类的,你应该使用公历。
得分了
如果您的代码没有保留该限制,则score = -∞。
默认bonus值为1。
- 如果您的代码不管输入顺序如何(例如
20100101,20110101return365或-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。感谢您提供的信息!