W swoim xkcd na temat standardowego formatu daty ISO 8601 Randall napisał dość dziwną alternatywną notację:
Duże liczby to wszystkie cyfry, które pojawiają się w bieżącej dacie w ich zwykłej kolejności, a małe liczby są 1-wskaźnikowymi wskaźnikami występowania tej cyfry. Powyższy przykład reprezentuje 2013-02-27
.
Zdefiniujmy reprezentację ASCII dla takiej daty. Pierwszy wiersz zawiera indeksy od 1 do 4. Drugi wiersz zawiera „duże” cyfry. Trzeci wiersz zawiera indeksy od 5 do 8. Jeśli w jednym gnieździe znajduje się wiele indeksów, są one wymienione obok siebie, od najmniejszej do największej. Jeśli m
w jednym polu jest co najwyżej indeks (tj. Na tej samej cyfrze i w tym samym rzędzie), każda kolumna powinna mieć m+1
szerokość znaków i wyrównanie do lewej:
2 3 1 4
0 1 2 3 7
5 67 8
Zobacz także wyzwanie towarzyszące dla odwrotnej konwersji.
Wyzwanie
Biorąc pod uwagę datę ISO 8601 ( YYYY-MM-DD
), wypisz odpowiedni zapis daty xkcd.
Możesz napisać program lub funkcję, pobierając dane wejściowe przez STDIN (lub najbliższą alternatywę), argument wiersza poleceń lub argument funkcji i wypisując wynik przez STDOUT (lub najbliższą alternatywę), wartość zwracaną funkcji lub parametr funkcji (wyjściowej).
Dowolny rok od 0000
do 9999
jest prawidłowym wprowadzeniem.
Spacje końcowe są dozwolone, spacje wiodące nie. Opcjonalnie możesz wypisać jeden końcowy znak nowej linii.
Obowiązują standardowe zasady gry w golfa .
Przypadki testowe
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