В своем 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
Смотрите также сопутствующий вызов для обратного преобразования.
Соревнование
Учитывая дату ISO 8601 ( YYYY-MM-DD
), выведите соответствующую запись даты xkcd.
Вы можете написать программу или функцию, принимая ввод через STDIN (или ближайшую альтернативу), аргумент командной строки или аргумент функции и выводя результат через STDOUT (или ближайшую альтернативу), возвращаемое значение функции или параметр функции (out).
Любой год от 0000
до 9999
является действительным вкладом.
Пробелы в конце разрешены, пробелы в начале - нет. При желании вы можете вывести один завершающий символ новой строки.
Применяются стандартные правила игры в гольф .
Тестовые случаи
2013-02-27
2 3 1 4
0 1 2 3 7
5 67 8
2015-12-24
2 3 1 4
0 1 2 4 5
5 67 8
2222-11-11
1234
1 2
5678
1878-02-08
1 3 24
0 1 2 7 8
57 6 8
2061-02-22
2 4 1 3
0 1 2 6
5 678
3564-10-28
1 4 2 3
0 1 2 3 4 5 6 8
6 5 7 8
1111-11-11
1234
1
5678
0123-12-30
1 2 3 4
0 1 2 3
8 5 6 7
Рубин,
200195189178162157 знаков(Опция из 156 символов + 1 символ командной строки)
Образец прогона:
источник
Python 2.7,
308310 байтНичего себе, его исправление стоило всего 2 байта!
Дата не должна быть разделена, дата может быть любой длины, она не должна быть датой, это может быть любая строка (но дефисы удаляются). Средняя часть выглядит довольно играбельно для меня.
источник
C #, 456
Golfed:
Ungolfed:
источник
Perl6, 265 байт
Golfed
Неутолкнутый (слегка)
источник
Python 3, 306 байт
Я исследую способы определения, прежде чем собирать верхнюю и нижнюю строки, какова будет максимальная ширина любого столбца. Как только я это получу, я смогу встраивать пробелы в строки напрямую, а не использовать все эти
join
функции.источник
''.join
в переменную?''.join(...)
какjoin('',...)
, что вместо этого нужно было бы «сохранить» как функцию.+=[i]
может быть+=i,
.return '\n'
->return'\n'
.Powershell,
174170168167 байтМенее гольф тестовый скрипт:
Вывод (только вертикальные бары, чтобы увидеть конечные и ведущие пробелы):
источник