En su xkcd sobre el formato de fecha estándar ISO 8601, Randall se coló en una notación alternativa bastante curiosa:
Los números grandes son todos los dígitos que aparecen en la fecha actual en su orden habitual, y los números pequeños son índices basados en 1 de las ocurrencias de ese dígito. Entonces el ejemplo anterior representa2013-02-27
.
Definamos una representación ASCII para tal fecha. La primera línea contiene los índices 1 a 4. La segunda línea contiene los dígitos "grandes". La tercera línea contiene los índices del 5 al 8. Si hay varios índices en una sola ranura, se enumeran uno al lado del otro de menor a mayor. Si hay como máximo m
índices en una sola ranura (es decir, en el mismo dígito y en la misma fila), entonces cada columna debe tener m+1
caracteres anchos y alineados a la izquierda:
2 3 1 4
0 1 2 3 7
5 67 8
Vea también el desafío complementario para la conversión opuesta.
El reto
Dada una fecha ISO 8601 (YYYY-MM-DD
), genera la notación de fecha xkcd correspondiente.
Puede escribir un programa o función, tomando la entrada a través de STDIN (o la alternativa más cercana), argumento de línea de comando o argumento de función y generando el resultado a través de STDOUT (o la alternativa más cercana), el valor de retorno de la función o el parámetro de función (out).
Cualquier año desde 0000
hasta 9999
es entrada válida.
Los espacios finales están permitidos, los espacios iniciales no. Opcionalmente, puede generar una nueva línea final.
Se aplican reglas estándar de código de golf .
Casos de prueba
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