Napisz program, który pobiera ciąg znaków, w którym każda linia składa się ze znaku 0
wciętego przez pewną liczbę spacji. Górna linia nie jest wcięta, a każda inna linia będzie wcięta o co najmniej jedną spację więcej niż linia tuż przed nią.
Żadne wiersze nie będą miały końcowych spacji, ale możesz opcjonalnie założyć, że istnieje jedna końcowa nowa linia.
Na przykład dane wejściowe mogą wyglądać mniej więcej tak:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Twoim zadaniem jest ponumerowanie go jak hierarchicznego konturu , przy użyciu rosnących liczb całkowitych dodatnich jako nagłówków linii. To byłby wynik dla przykładu:
1
1
1
2
2
2
1
2
3
1
3
1
1
2
Zwróć uwagę, że każdy hierarchiczny poziom wcięcia ma swój własny zestaw rosnących liczb, nawet jeśli zwiększają się tylko do jednego.
Na wyjściu nie powinno być żadnych spacji końcowych, ale opcjonalnie może występować pojedynczy znak nowej linii.
Napisz pełny program, który pobiera ciąg wejściowy za pomocą stdin lub wiersza poleceń, lub napisz funkcję, która przyjmuje ciąg jako argument. Wydrukuj wynik lub zwróć jako ciąg.
Najkrótszy kod w bajtach wygrywa.
Przykłady
Jeśli wprowadzono pusty ciąg, pusty ciąg powinien zostać wyprowadzony.
Kolejnym najbardziej trywialnym przykładem jest wejście
0
który powinien się stać
1
Duży przykład - dane wejściowe:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Wynik:
1
1
1
2
1
3
1
2
1
2
1
1
2
3
4
2
3
1
2
3
2
1
1
2
1
2
3
4
5
6
7
8
9
10
11
1
1
1
12
1
3
4
5
1
1
1
1
1
1
2
2
2
2
2
2
1
2
1
2
6
7
S=[]\nfor w in input()[:-1].split('0\n'):S=([0]+S)[~len(w):];S[0]+=1;print w+`S[0]`