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 .
fonte
Respostas:
Python 2-198
Eu esperava diminuir um pouco mais as compreensões, mas agora não tenho muito tempo para realmente testar diferentes maneiras de fazer as coisas.
O OP não incluiu um exemplo como
{[([{}])]}{[
(com grupos adjacentes), mas se essa funcionalidade é ou não necessária, isso gera a saída correta{[([{}])]}{[]}
fonte
\t
) são formatados como 4 espaços no estouro de pilha, mas na verdade estou alternando tabs e espaços (você pode fazer isso para os níveis de indentação no Python 2, não 3), então o primeiro nível é o[space]
segundo e o[tab]
terceiro é[tab][space]
o seguinte[tab][tab]
. Digitar o código com espaços me dá 227 a partir daqui mothereff.in/byte-counter , e conto 10 abas, então 227 - (3 * 10) = 197. Huh, acho que realmente super-contei 1 maneira quando eu Postou isso.return r+[s[f(c)^1]for c in m]
para salvar bytes.Haskell, 513
A função
h
. A versão anterior não forneceu respostas corretas para"({{)["
e"({{)}}"
fonte