あなたはプロジェクトマネージャーです。ある日、あなたのプログラマーの一つは非常識(行きませんあなたのせいに)とコードベース内のすべての式を取って、自分の無能(約わめき散らす、その場で終了する前に、それらにランダムブラケットを追加してもいないあなたのせい)。これは簡単な修正ですが、何らかの理由でリビジョン管理を使用していません(完全にあなたのせいではありません)。そして、何らかの理由で、他のプログラマーは誰も、不一致のブラケットを修正するためにすべての式を調べることを望みません(ところで、それはあなたのせいではありません)。最近のプログラマーは、自分で考えています。あなたは自分でそれをしなければなりません。ホラー!そのようなタスクはあなたの下にあるはずでした...
入力は単一の行になり、左角かっこ(( [ {
)と右角かっこ()がいくつか含まれます) ] }
。また、常にではありませんが、コメント(/* */
)および文字列リテラル(" "
または' '
)およびさまざまな数字、文字、または記号を含む場合があります。
対応する反対(コメントまたは文字列リテラルの外側)を持たない少なくとも1つのブラケット(コメントまたは文字列リテラルの外側)があります。たとえば}
、{
事前のないエラー。別の例:後の(
ものがないa )
。プログラムは、ブラケットを一致させるために必要な最小数のブラケットをスペースに置き換えます。
例:
(4 + (2 + 3))]
==> (4 + (2 + 3))
(端における角括弧)
][][[]]
==> [][[]]
(開始時角括弧)
("Hel(o!"))
==> ("Hel(o!")
(端における括弧)
( /* )]*/
==> /* )]*/
(開始時括弧)
{()]
==> ()
(中括弧と角括弧)
- 入力は、最も便利な方法(STDIN、コマンドライン引数、ファイルからの読み取りなど)から取得できます。
- 同じ数の削除で不一致を解決する方法が複数ある場合は、どちらでもかまいません。
- 括弧内の不一致のみがあります。文字列リテラルとコメントは常に正しく形成されます。
- タイトルはこのSOスレッドから来ています
- コメントに引用符、引用符に引用符、コメントにコメント、引用符にコメントが含まれることはありません。
これはコードゴルフであるため、最小バイト数が優先されます。仕様が明確でない場合は、コメントで質問してください。
("foo (\") bar")
)ますか?
{{(})
であるべき{ }
開口部のシナリオは、コードがそもそも働いていたことを意味し、以降、または同等の{(})
私が知っているすべてのプログラミング言語の不一致括弧としてカウント(すなわち「原因うっ滞」??)。しかし、その後、私はすでに答えを書いたので、私は偏見があります。