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 .
źródło
Odpowiedzi:
Python 2 - 198
Miałem nadzieję, że trochę bardziej zrozumiem to rozumienie, ale nie mam teraz dużo czasu na przetestowanie różnych sposobów działania.
OP nie zawierał takiego przykładu
{[([{}])]}{[
(z sąsiednimi grupami), ale to, czy ta funkcjonalność jest wymagana, daje prawidłowe wyniki{[([{}])]}{[]}
źródło
\t
) są sformatowane jako 4 spacje po przepełnieniu stosu, ale tak naprawdę zmieniam tabulacje i spacje (możesz to zrobić dla poziomów wcięcia w Pythonie 2, a nie 3), więc pierwszy poziom to[space]
drugi,[tab]
trzeci to[tab][space]
czwarty, to czwarty[tab][tab]
. Wpisanie kodu spacjami daje mi 227 stąd mothereff.in/byte-counter , a ja liczę 10 tabulatorów, więc 227 - (3 * 10) = 197. Huh, chyba tak naprawdę przeliczyłem się o jedną drogę wstecz, kiedy wysłał to.return r+[s[f(c)^1]for c in m]
aby zapisać bajty.Haskell, 513
Funkcja
h
. Poprzednia wersja nie zawierała poprawnych odpowiedzi dla"({{)["
i"({{)}}"
źródło