Na podstawie TEGO pytania.
Biorąc pod uwagę ciąg, zamień każdy nawias ()[]{}<>
na nawias odpowiedniego typu, aby nawiasy pasowały do siebie, a nawiasy zagnieżdżone wykonują cykl w następujący sposób:
- Najbardziej oddalone są
()
- Bezpośrednio wewnątrz
()
powinno być[]
- Bezpośrednio wewnątrz
[]
powinno być{}
- Bezpośrednio wewnątrz
{}
powinno być<>
- Bezpośrednio wewnątrz
<>
będzie()
ponownie (cykle)
Wszystkie znaki bez nawiasów muszą pozostać dokładnie takie, jakie są. Otwarte nawiasy można zastąpić tylko otwartymi nawiasami pewnego typu, a nawiasy zamknięte nawiasami zamkniętymi.
Wejście zawsze umożliwi to. Oznacza to, że nawiasy są poprawnie dopasowane, jeśli ich typ jest ignorowany. Tak, {ab<)c]
to ważne wejście, ale ab)(cd
czy ab((cd
nie.
Przykłady:
2#jd {¤>. = 2#jd (¤).
abcdef = abcdef
(3×5+(4-1)) = (3×5+[4-1])
<<<>><<>><<<<<<>>>>>>> = ([{}][{}][{<([{}])>}])
Używanie natywnej transformacji danych wejściowych w ten sposób (automatyczna składnia języka) jest niedozwolone.
Jak zawsze: wygrywa najkrótszy kod.
code-golf
string
balanced-string
Dirk Reichel
źródło
źródło
Odpowiedzi:
JavaScript (ES6), 79 bajtów
Przypadki testowe
Pokaż fragment kodu
źródło
Lex, 132 bajty
źródło
flex
jako kompilatora), usuwając odpowiednio ostatnie dwa lub trzy wiersze, kosztem pewnej liczby bajtów (prawdopodobnie 2, 3 lub 4; reguły są nieco niejasne) w karach za-ll
opcję wiersza poleceń podczas łączenia wynikowego pliku C. (To znaczy, zamiast kompilowaćlex brackets.l; cc lex.yy.c
, kompilujesz zlex brackets.l; cc lex.yy.c -ll
.) To zdecydowanie kompromis, który warto zrobić w tej sytuacji.Java, 155 bajtów
Lambda, która przyjmuje
char[]
argument jako pojedynczy argument. Pętlimy tablicę, przechowując jej pozycję w naszym ciągu nawiasów (s
) w zmiennej (k
). Sprawdzamy, czy jest to nawias otwierający lub zamykający (s.indexAt()
), i zastępujemy go odpowiednim nawiasiem zależnym od poziomu zagnieżdżenia (s.charAt()
), odpowiednio zapętlając%4
źródło
Haskell, 126 bajtów
Wypróbuj na ideone. Stosowanie:
Wyjaśnienie
f
przyjmuje trzy argumenty: ciąg znaków, który działa jako stos do zamykania nawiasów, intn
dla zliczania głębokości zagnieżdżenia i ciąg wejściowy.źródło