Em seu xkcd sobre o formato de data padrão ISO 8601, Randall se escondeu em uma notação alternativa bastante curiosa:
Os números grandes são todos os dígitos que aparecem na data atual em sua ordem usual, e os números pequenos são índices baseados em 1 das ocorrências desse dígito. Portanto, o exemplo acima representa 2013-02-27
.
Vamos definir uma representação ASCII para essa data. A primeira linha contém os índices de 1 a 4. A segunda linha contém os dígitos "grandes". A terceira linha contém os índices 5 a 8. Se houver vários índices em um único slot, eles serão listados um do lado do outro, do menor para o maior. Se houver no máximo m
índices em um único slot (ou seja, no mesmo dígito e na mesma linha), cada coluna deverá ter m+1
caracteres largos e alinhados à esquerda:
2 3 1 4
0 1 2 3 7
5 67 8
Veja também o desafio associado para a conversão oposta.
O desafio
Dada uma data ISO 8601 ( YYYY-MM-DD
), imprima a notação de data xkcd correspondente.
Você pode escrever um programa ou função, recebendo entrada via STDIN (ou alternativa mais próxima), argumento da linha de comando ou argumento da função e emitindo o resultado via STDOUT (ou alternativa mais próxima), valor de retorno da função ou parâmetro da função (saída).
Qualquer ano de 0000
a 9999
é entrada válida.
Espaços à direita são permitidos, espaços à esquerda não. Opcionalmente, você pode gerar uma única nova linha à direita.
Aplicam-se as regras de código-golfe padrão .
Casos de teste
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