中括弧などを修正する


15

あなたの使命は、あなたがそれを受け入れることを選択した場合、括弧、括弧、および括弧の最小数を追加して、特定の文字列(括弧、括弧、および括弧のみを含む)が正しい括弧に一致するようにすることです。ペアのブレース間の最大距離を確保することにより、追加されたシンボルの結び付きを解除する必要があります。これら2つのルールに一致する正しい答えを1つだけ返す必要があります。関係が存在する場合、それ以上の関係は、適切と思われる方法で破損する可能性があります。

例:

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

プログラムまたは関数を記述し、関数への文字列引数としてSTDINを介して入力を受け取り、出力を文字列として返すか、STDOUT(または最も近い代替)に出力します。オプションで、出力に単一の末尾の改行を含めることができます。

入力文字列は、次の6文字のみで構成されていると仮定することもできます(またはその入力がないこと):([](){}サポートする必要はありません<>

これは、最短のプログラムが勝ちます。もちろん、標準的な抜け穴は禁止されています。


タイトルを実際のタイトルのすぐ下に繰り返すか、タグを実際のタグのすぐ上に繰り返すということですか?Sandboxから貼り付けたものをコピーして、それらを削除するのを忘れた場合に尋ねてください。
レインボルト

@Rainbolt前者なし(サンドボックス)、後者あり
-durron597

1
@AlexA。私はそれらがマイナーな方法でどのように異なるかを見ることができますが、私はそれらが別々の質問と見なされるにはあまりにも似ていると思います。
NinjaBearMonkey

けっこうだ。それは確かにカットアンドドライではなく、他の人がそうしないと決めた場合、私はそれを閉じようとはしません。
NinjaBearMonkey

私はそれを十分に異なると考えます。再開に投票しました。
nderscore

回答:


1

Python 2-198

理解度をもう少し下げたいと思っていましたが、今はいろいろな方法で実際にテストする時間はあまりありません。

s="()[]{}";f=s.find
def F(S):
 r=m=""
 for c in S:
    i=f(c)^1
    if i%2:m=c+m;r+=c
    else:
     for d in m:
        if d==s[i]:break
        r+=s[f(d)^1]
     else:r=s[i]+r+c
     m=m[1:]
 for c in m:r+=s[f(c)^1]
 return r

OPには{[([{}])]}{[(隣接するグループで)などの例は含まれていませんでしたが、この機能が必要かどうかにかかわらず、正しい出力{[([{}])]}{[]}


198バイトはどうですか?
ザカリー16

@ZacharyT、タブ(\t)はスタックオーバーフローで4つのスペースとしてフォーマットされますが、実際にはタブとスペースを交互に使用しています(3ではなくPython 2のインデントレベルでこれを行うことができます)ので、最初のレベルは[space]2番目、[tab]3 番目は4 番目[tab][space]です[tab][tab]。スペースを入れてコードを入力すると、ここから227がmothereff.in/byte-counterになり、10個のタブがカウントされます。したがって227-(3 * 10)= 197です。投稿しました。
KSab 16

ダン!それは本当に良いトリックです。(行末に入力してください)。最下部のforループとreturnステートメントを組み合わせて、return r+[s[f(c)^1]for c in m]バイトを節約できます。
ザカリー16

1

ハスケル、513

関数h。以前のバージョンでは、"({{)["および"({{)}}"

import Control.Monad

m '('=')'
m '['=']'
m '{'='}'
m ')'='('
m ']'='['
m '}'='{'

data B=B Char[B]|N[B]|Z B Char[B]
instance Eq B where(==)a b=q a==q b
instance Ord B where(<=)a b=q a<=q b

w(B o s)=o:(s>>=w)++[m o]
v(N k)=k>>=w
n(B _ k)=(sum$n<$>k)+1
q(N k)=sum$n<$>k

u(Z(Z g pc pk) c k)=Z g pc(pk++[B c k])
u(Z(N pk) c k)=N(pk++[B c k])
t(N k)=N k
t z=t$u z

f z c|elem c "([{"=[Z z c[]]
f z@(Z p o k) c|m c==o=[u z]|2>1=(u$Z(Z p o [])(m c)k):f(u z)c
f (N k)c=[Z(N[])(m c)k]

h s=v.minimum$t<$>foldM f(N [])s
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.