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 mw jednym polu jest co najwyżej indeks (tj. Na tej samej cyfrze i w tym samym wierszu), każda kolumna powinna mieć m+1szerokość 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
Podając datę w notacji xkcd, wypisz odpowiednią datę ISO 8601 ( YYYY-MM-DD).
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).
Można zakładać, że wejście jest jakaś ważna data w latach 0000i 9999włącznie.
Na wejściu nie będzie żadnych spacji wiodących, ale możesz założyć, że linie są wypełnione spacjami do prostokąta, który zawiera co najmniej jedną końcową kolumnę spacji.
Obowiązują standardowe zasady gry w golfa .
Przypadki testowe
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
1Jest powyżej 2, więc pierwsza cyfra to 2. 2jest powyżej 0, więc drugą cyfrą jest 0. 3jest powyżej 1, 4jest powyżej 3, więc otrzymujemy 2013jako pierwsze cztery cyfry. Teraz 5jest poniżej 0, więc piąta cyfra jest 0, 6i 7obie są poniżej 2, więc obie te cyfry są 2. I w końcu 8jest poniżej 7, więc ostatnia cyfra jest 8, a my kończymy na 2013-02-27. (Łączniki są ukryte w notacji xkcd, ponieważ wiemy, w jakich pozycjach się pojawiają.)
