Chcę funkcji Python, która pobiera ciąg znaków i zwraca tablicę, gdzie każdy element w tablicy jest albo znakiem, albo inną tablicą tego rodzaju. Zagnieżdżone tablice są oznaczone w łańcuchu wejściowym zaczynając od "(" i kończąc na ")".Jak przeanalizować ciąg znaków i zwrócić zagnieżdżoną tablicę?
Zatem funkcja będzie działać tak:
1) foo("abc") == ["a", "b", "c"]
2) foo("a(b)c") == ["a", ["b"], "c"]
3) foo("a(b(c))") == ["a", ["b", ["c"]]]
4) foo("a(b(c)") == error: closing bracket is missing
5) foo("a(b))c") == error: opening bracket is missing
6) foo("a)b(c") == error: opening bracket is missing
Uwaga: Wolałbym rozwiązanie, które jest czysto funkcjonalne.
Zastosowanie rekurencji tutaj, to idealne dopasowanie. Znalezienie "(" w strumieniu tokena oznacza ponowne pojawienie się. Znalezienie ")" na najwyższym poziomie wywołania oznacza, że istnieje niedopasowanie bilansu. – user2246674
Po co to jest? –
trzeba użyć stosu .. –