6
计算RFC 2550时间戳
RFC 2550是一个讽刺性提案(于1999年4月1日发布),其时间戳可以节省空间的ASCII表示形式,可以支持任何日期(甚至包括在Universe开始之前的日期以及在Universe预计结束之后的日期)。用于计算符合RFC 2550时间戳是作为算法如下(注意:所有范围包括开始,但排除端- 0至10000的所有的装置n,其中0 <= n < 10000): 年份格式 0到10,000年:一个四位数的十进制数字,在左边用零填充。 10,000到100,000年:5位数的十进制数字,以字符A为前缀。 100,000至10 30年:年份的十进制数字,以大写ASCII字母为前缀,其英文字母的索引等于十进制年份的位数,减5(B代表6位数字的年份,C代表7的年份)位数年份等)。 10 30到10 56年:与10,000到10 30相同的格式,以A开头的字母,并^在字符串前面加上插入号()(因此,10 30表示为^A1000000000000000000000000000000,10 31表示为通过^B10000000000000000000000000000000)。 10 56到10 732年:年份以两个插入符号和两个ASCII大写字母为前缀。大写字母组成一个以26为基数的数字,代表年份中的数字数量,减去57。 10 732年及以后:使用10 56到10 732的相同格式,并在必要时通过添加附加的脱字号和大写字母来扩展格式。 BCE年(0年之前):计算年的绝对值的年字符串。然后,将所有字母替换为其以26为底的补码(A <-> Z,B <-> Y等),将所有数字替换为其以10为底的补码(0 <-> 9、1 <-> 8,等),并用感叹号(!)替换插入符号。如果年份字符串是4位或更少(即-1到-10,000),请在正斜杠(/)之前加上。如果年份字符串未以正斜杠或感叹号作为前缀,请在星号(*)前面加上。 月,日,小时,分钟和秒:由于这些值最多只能是2位数字,因此它们按重要性的降序简单地附加在年份字符串的右边,并在必要时用零填充2位数字的字符串。 更高的精度:如果需要更高的精度(以毫秒,微秒,纳秒等形式),则将这些值用0到3位数字进行左填充(因为每个值都是1/1000前一个值,因此最多为999)。并以重要性从小到大的顺序附加到时间戳的末尾。 这种格式的优点是词法排序等效于相应时间戳的数字排序-如果时间A在时间B之前,那么当应用词法排序时,A的时间戳将在B的时间戳之前。 挑战 给定任意长的数字列表(例如[year, month, day, hour, minute, second, millisecond],按重要性从高到低的顺序对应于时间值),请输出相应的RFC 2550时间戳。 规则 解决方案必须适用于任何给定的输入。唯一的限制应该是时间和可用内存。 输入可以采用任何合理,方便的格式(例如,数字列表,字符串列表,由单个非数字字符分隔的字符串等)。 …