在关于ISO 8601标准日期格式的 xkcd中, Randall用一种颇为奇怪的替代表示法偷偷摸摸:
大数字是以当前顺序显示在当前日期中的所有数字,小数字是该数字出现的基于1的索引。因此,以上示例表示2013-02-27
。
让我们为这种日期定义一个ASCII表示形式。第一行包含索引1到4。第二行包含“大”数字。第三行包含索引5到8。如果在一个插槽中有多个索引,则它们从最小到最大依次列出。如果m
单个插槽中最多有索引(即,在同一数字上,并且在同一行中),则每一列应为m+1
字符宽度且左对齐:
2 3 1 4
0 1 2 3 7
5 67 8
另请参见伴随挑战,以获得相反的转化。
挑战
给定xkcd格式的日期,请输出相应的ISO 8601日期(YYYY-MM-DD
)。
您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行自变量或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。
您可以假设输入的是介于0000
和之间的任何有效日期9999
。
输入中将没有任何前导空格,但是您可以假定这些行用空格填充到一个矩形,该矩形最多包含一个尾随空格。
适用标准代码高尔夫球规则。
测试用例
2 3 1 4
0 1 2 3 7
5 67 8
2013-02-27
2 3 1 4
0 1 2 4 5
5 67 8
2015-12-24
1234
1 2
5678
2222-11-11
1 3 24
0 1 2 7 8
57 6 8
1878-02-08
2 4 1 3
0 1 2 6
5 678
2061-02-22
1 4 2 3
0 1 2 3 4 5 6 8
6 5 7 8
3564-10-28
1234
1
5678
1111-11-11
1 2 3 4
0 1 2 3
8 5 6 7
0123-12-30
1
在上面2
,因此第一个数字是2
。2
在上方0
,因此第二个数字是0
。3
高于1
,4
高于3
,因此我们得到2013
前四位数字。现在5
在下面0
,所以第五位数字是0
,6
并且7
都在下面2
,所以这两个数字都是2
。最后是,8
在下面7
,所以最后一位是8
,我们最后得到2013-02-27
。(连字符在xkcd表示法中是隐含的,因为我们知道它们出现在什么位置。)