Votre mission, si vous l'acceptez, consiste à ajouter le nombre minimum de parenthèses, d'accolades et de crochets pour que la chaîne donnée (contenant uniquement les parenthèses, les accolades et les crochets) ait une correspondance d'accolade correcte. Les liens des symboles ajoutés doivent être rompus en ayant la distance maximale entre les accolades appariées. Vous devez renvoyer une seule réponse correcte qui correspond à ces deux règles; D'autres liens, s'ils existent, peuvent être rompus comme bon vous semble.
Exemples:
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
Vous pouvez écrire un programme ou une fonction , recevoir l'entrée via STDIN en tant qu'argument chaîne à votre fonction, qui renvoie la sortie sous forme de chaîne ou l'imprime dans STDOUT (ou l'alternative la plus proche). Vous pouvez éventuellement inclure une seule nouvelle ligne de fin dans la sortie.
Vous pouvez supposer que la chaîne d'entrée ne comprend que les 6 caractères suivants (ou leur absence): [](){}
(Vous n'avez pas besoin de prendre en charge <>
)
Il s'agit du code-golf , le programme le plus court qui gagne. Les failles standard sont bien sûr interdites .
la source
Réponses:
Python 2-198
J'espérais obtenir un peu plus de compréhension, mais je n'ai pas beaucoup de temps pour tester vraiment différentes façons de faire les choses.
L'OP n'a pas inclus un exemple comme
{[([{}])]}{[
(avec des groupes adjacents), mais que cette fonctionnalité soit requise ou non, cela donne le bon{[([{}])]}{[]}
la source
\t
) est formaté en 4 espaces lors du débordement de la pile, mais j'alterne en fait des tabulations et des espaces (vous pouvez le faire pour les niveaux d'indentation en Python 2, pas 3), donc le premier niveau est le[space]
deuxième, le[tab]
troisième est le[tab][space]
quatrième[tab][tab]
. Entrer le code avec des espaces me donne 227 d'ici mothereff.in/byte-counter , et je compte 10 tabs donc 227 - (3 * 10) = 197. Huh, je suppose que j'ai en fait sur-compté par 1 chemin quand je a posté cela.return r+[s[f(c)^1]for c in m]
pour enregistrer les octets.Haskell, 513
La fonction
h
. La version précédente ne donnait pas de réponses correctes pour"({{)["
et"({{)}}"
la source