В своем xkcd о стандартном формате даты ISO 8601 Рэндалл вырвался в довольно любопытной альтернативной записи:
Большие числа - это все цифры, которые появляются в текущей дате в их обычном порядке, а маленькие цифры - это индексы, основанные на 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, потому что мы знаем, в каких позициях они появляются.)