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 wierszu), 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
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 0000
i 9999
włą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
1
Jest powyżej 2
, więc pierwsza cyfra to 2
. 2
jest powyżej 0
, więc drugą cyfrą jest 0
. 3
jest powyżej 1
, 4
jest powyżej 3
, więc otrzymujemy 2013
jako pierwsze cztery cyfry. Teraz 5
jest poniżej 0
, więc piąta cyfra jest 0
, 6
i 7
obie są poniżej 2
, więc obie te cyfry są 2
. I w końcu 8
jest 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ą.)