Twoim zadaniem, należy wybrać, aby go zaakceptować, jest dodanie do minimum liczbę nawiasów, szelki i wsporników, aby dany ciąg (zawierający tylko nawiasy, szelki i uchwyty) posiadają odpowiedni dobór nawiasów. Dodane powiązania symboli należy przerwać, zachowując maksymalną odległość między sparowanymi nawiasami klamrowymi. Musisz zwrócić tylko jedną poprawną odpowiedź, która pasuje do tych dwóch zasad; Dalsze więzi, jeśli istnieją, mogą zostać zerwane w dowolny sposób.
Przykłady:
input output
// Empty String is a legal input
[ [] // Boring example
[()] [()] // Do nothing if there's nothing to be done
({{ ({{}}) // NOT (){}{} (0 + 0 + 0). Maximum distance is 4 + 2 + 0, ({{}})
[([{])]} {[([{}])]} // NOT [([])]{[([])]} or similar
Możesz napisać program lub funkcję , odbiera dane wejściowe przez STDIN jako argument ciągu do swojej funkcji, która zwraca dane wyjściowe jako ciąg znaków lub wypisuje je do STDOUT (lub najbliższej alternatywy). Opcjonalnie możesz dołączyć jeden końcowy znak nowej linii do wyniku.
Możesz założyć, że ciąg wejściowy składa się tylko z następujących 6 znaków (lub ich brak): [](){}
(Nie musisz obsługiwać <>
)
To jest golf golfowy , wygrywa najkrótszy program. Oczywiście standardowe luki są zabronione .