在弗诺·温格(Vernor Vinge)的出色且引人入胜的书《天空中的深处》 (顺便提一下,我强烈推荐1)中,跨越各种恒星系统的文化“ Ho何 ”没有“天”,“月”,“ ”等,因此具有独特的计时系统,可以完全以秒为单位测量时间。最常用的单位是Ksec(毫秒),Msec (兆秒)和Gsec(千兆秒)。这是我自己的书本中的一个方便的图表(由于无法在线查找):
您目前正乘坐Pham Nuwen飞机飞行,并且刚刚收到来自一个陌生的未知行星“ 地球 ” 的消息。2它们使用的时间单位与您使用的时间单位不同,并且您的计算机无法识别它们的时间单位。作为船舶的常驻程序员-考古学家,您的工作是打补丁时间处理代码,以便它可以识别地球的时间单位。
自然,由于您只剩下了几Ksec的时间才进入冷睡眠状态,因此您希望使代码尽可能短,以便可以快速编写。幸运的是,作为星际贸易文化,Qeng Ho可以使用每一种发明的编程语言。
输入项
输入将是一个包含一个或多个用空格分隔的组件的单个字符串
。甲组件被定义为一个整数> 0且≤255,然后一空间,然后之一second
,minute
,hour
,day
,week
,month
,
year
,decade
,或century
,可能有多个(具有添加的s
,或者
centuries
在过去的情况下)。
以下是一些有效的示例输入:
10 days 12 hours
1 year
184 centuries 1 second
9 weeks 6 days 2 hours 1 minute 20 seconds
您可以对输入假设以下内容:
复数单位将始终与相关数量一致。
如果输入中包含多个分量,则它们将始终按长度降序排列。
对于此挑战,以下是各种输入单位的含义:
unit relative absolute
---------------------------------------
second 1 second 1 second
minute 60 seconds 60 seconds
hour 60 minutes 3600 seconds
day 24 hours 86400 seconds
week 7 days 604800 seconds
month 30 days 2592000 seconds
year 365 days 31536000 seconds
decade 10 years 315360000 seconds
century 10 decades 3153600000 seconds
输出量
以下是您的代码必须支持的Qeng Ho单位:
unit relative absolute
----------------------------------------
second 1 second 1 second
Ksec 1000 seconds 1000 seconds
Msec 1000 Ksecs 1000000 seconds
Gsec 1000 Msecs 1000000000 seconds
使用以下算法确定代码的输出:
首先,将输入代表的总时间相加。
找到更短的时间或与输入时间相同的最大Qeng Ho单位-本质上,找到至少一个存在的最大Qeng Ho单位。
将输入中给出的总时间转换为该单位,然后输出结果,四舍五入到小数点后三位。
您可以选择使用以下哪种方法:向上舍入,向下舍入,从零舍入或向∞或-∞舍入。如果四舍五入的结果以结尾0
,则可以删除尾随零或保留所需的任意多个(或同时输入两个,具体取决于输入)。
如果舍入的结果是完全1.000
,你必须使用单数形式(second
,Ksec
,Msec
,Gsec
); 否则,可使用复数形式(seconds
,
Ksecs
,Msecs
,Gsecs
)。
在某些边缘情况下,您可能使用的单位是例如Ksec,但是获得的舍入结果为1000.000 Ksecs。在这种情况下,您可以简单地输出
1000.000 Ksecs
而不是1 Msec
。
您可能总是假设输入的单位是降序(世纪,十年,年份等);此外,在任何给定单位之后的组件将总是更短(即,1 decade 20 years
无效输入)。
测试用例
注意:*
由于四舍五入的差异,带有星号()的结果可能相差不大。
input output
-------------------------------------------------------------
1 hour 3.600 Ksecs
1 day 86.400 Ksecs
2 weeks 1.210 Msecs
1 year 31.536 Msecs
32 years 1.009 Gsecs *
1 second 1.000 second
1 century 6 decades 5.046 Gsecs *
255 centuries 804.168 Gsecs
2 weeks 6 days 1 hour 19 minutes 4 seconds 1.733 Msecs
1 week 3 days 3 hours 7 minutes 875.220 Ksecs
1 week 4 days 13 hours 46 minutes 40 seconds 1.000 Msec
2 months 2 hours 5.191 Msecs *
16 minutes 39 seconds 999.000 seconds
规则
- 这是code-golf,因此以字节为单位的最短代码获胜。
1:当然,只有喜欢硬科学幻想曲的人 在这种情况下,我建议先阅读《深渊之火》,这(我认为)更加奇妙。
2:好吧,从技术上讲,《天空的深处》曾多次提到“旧地球” ,但是...
2 months 2 hours
是“ 2个月* 2小时”。