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