Vous êtes chef de projet. Un jour, l'un de vos programmeurs est devenu fou (ce n'est pas de votre faute ) et a pris toutes les expressions dans la base de code et leur a ajouté des crochets aléatoires, avant de quitter sur le champ, se plaignant de votre incompétence (ce n'est pas non plus votre faute ). Ce serait une solution facile, cependant, pour une raison quelconque, vous n'utilisez pas le contrôle de révision (ce n'est absolument pas votre faute ). Et pour une raison quelconque, aucun des autres programmeurs ne veut passer par chaque expression pour corriger les crochets incompatibles ( d'ailleurs, ce n'est pas votre faute ). Les programmeurs de nos jours, vous pensez à vous-même. Vous devrez le faire vous-même. L'horreur! De telles tâches étaient censées être sous vous ...
L'entrée sera une seule ligne, qui contiendra un certain nombre de crochets gauche ( ( [ {
) et de crochets droit ( ) ] }
). Il peut également, mais pas toujours, contenir des commentaires ( /* */
) et des littéraux de chaîne ( " "
ou ' '
) et divers chiffres, lettres ou symboles.
Il y aura au moins une parenthèse (en dehors d'un commentaire ou d'un littéral de chaîne) qui n'a pas d'opposé corrosif (en dehors d'un commentaire ou d'un littéral de chaîne). Par exemple, un errant }
sans a {
priori. Un autre exemple: un (
qui n'en a pas )
après. Votre programme remplacera par un espace le nombre minimum de parenthèses requises pour faire correspondre les parenthèses.
Exemples:
(4 + (2 + 3))]
==> (4 + (2 + 3))
(le crochet à la fin)
][][[]]
==> [][[]]
(le crochet au début)
("Hel(o!"))
==> ("Hel(o!")
(la parenthèse à la fin)
( /* )]*/
==> /* )]*/
(la parenthèse au début)
{()]
==> ()
(le crochet et le crochet carré)
- L'entrée peut être prise de la manière la plus pratique (STDIN, argument de ligne de commande, lecture à partir d'un fichier, etc.)
- S'il existe plusieurs façons de résoudre l'inadéquation avec le même nombre de suppressions, l'une ou l'autre est acceptable.
- Il n'y aura que des décalages entre parenthèses. Les littéraux de chaîne et les commentaires seront toujours correctement formés.
- Le titre vient de ce fil SO
- Il n'y aura jamais de citations dans les commentaires, de citations dans les citations, de commentaires dans les commentaires ou de commentaires dans les citations.
C'est le golf de code, donc le nombre minimum d'octets gagne. Posez des questions dans les commentaires si la spécification n'est pas claire.
("foo (\") bar")
)?
{{(})
devrait être { }
ou équivalente, car le scénario d'ouverture implique que le code fonctionnait au départ et {(})
compte comme des crochets incompatibles dans tous les langages de programmation que je connais (c'est-à-dire "provoque une stase" ??). Mais alors, j'ai déjà écrit une réponse, donc je suis partiale.