La tua missione, se scegli di accettarlo, è quella di aggiungere il numero minimo di parentesi, parentesi graffe e parentesi quadre per fare in modo che una determinata stringa (contenente solo parentesi, parentesi graffe e parentesi quadre) abbia una corrispondenza di parentesi graffe corretta. I legami dei simboli aggiunti devono essere interrotti avendo la distanza massima tra parentesi graffe accoppiate. È necessario restituire solo una risposta corretta che corrisponda a queste due regole; Ulteriori legami, se dovessero esistere, potrebbero essere spezzati in qualsiasi modo tu ritenga opportuno.
Esempi:
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
È possibile scrivere un programma o una funzione , ricevere l'input tramite STDIN come argomento stringa nella propria funzione, che restituisce l'output come stringa o lo stampa su STDOUT (o alternativa più vicina). Se lo si desidera, è possibile includere una nuova riga finale finale nell'output.
È possibile supporre che la stringa di input sia composta solo dai seguenti 6 caratteri (o dalla mancanza di questi): [](){}
(Non è necessario il supporto <>
)
Questo è code-golf , il programma più corto vince. Le scappatoie standard sono vietate, ovviamente .