Sua missão, se você optar por aceitá-la, é adicionar o número mínimo de parênteses, colchetes e colchetes para formar uma determinada sequência (contendo apenas parênteses, colchetes e colchetes) com a correspondência correta entre colchetes. Os laços dos símbolos adicionados devem ser quebrados tendo a distância máxima entre chaves emparelhadas. Você deve retornar apenas uma resposta correta que corresponda a essas duas regras; Outros laços, caso existam, podem ser rompidos da maneira que você achar melhor.
Exemplos:
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
Você pode escrever um programa ou função , receber a entrada via STDIN como um argumento de string para sua função, que retorna a saída como uma string ou a imprime em STDOUT (ou alternativa mais próxima). Opcionalmente, você pode incluir uma única nova linha à direita na saída.
Você pode assumir que a sequência de entrada consiste apenas nos 6 caracteres a seguir (ou na falta deles): [](){}
(Você não precisa oferecer suporte <>
)
Este é o código-golfe , o programa mais curto vence. As brechas padrão são proibidas, é claro .