この質問に基づいてい ます。
文字列が与えられたら、各ブラケット()[]{}<>
を適切なタイプのブラケットに置き換えて、ブラケットが一致し、ネストされたブラケットが次のように循環するようにします。
- 一番外側のものは
()
- 直接の中にある
()
はずです[]
- 直接の中にある
[]
はずです{}
- 直接の中にある
{}
はずです<>
- 直接の内側に
<>
なり()
、再び(サイクル)
ブラケット以外の文字はすべて、そのままにしておく必要があります。開き角括弧は、あるタイプの開き角括弧にのみ置き換えられ、閉じ角括弧は閉じ角括弧に置き換えられます。
入力は常にこれを可能にします。これは、タイプが無視された場合にブラケットが正しく一致することを意味します。だから、{ab<)c]
有効な入力ですが、ab)(cd
かab((cd
ではありません。
例:
2#jd {¤>. = 2#jd (¤).
abcdef = abcdef
(3×5+(4-1)) = (3×5+[4-1])
<<<>><<>><<<<<<>>>>>>> = ([{}][{}][{<([{}])>}])
この方法での入力のネイティブ変換(言語の自動構文)の使用は許可されていません。
いつものように:最短のコードが優先されます。
私は挑戦を理解していません。入力に関して、出力は何である必要がありますか?
—
xnor
@xnor出力は、4種類の角かっこを除いて、入力と同じ文字列である必要があります。パターンに一致するように交換する必要があります。
—
Dirk Reichel、
あ、そうか。「あるべき」があなたが真実にするはずのことだと理解していませんでした。わかりやすくするために編集します。
—
xnor
@DirkReichel心配する必要はないと思います。どの言語もこの特定の変換をネイティブに実行できるとは想像できません。万が一そのような言語が存在する場合、その言語での回答はあまり面白くないということです。
—
Martin Ender
@DirkReichelポイントは何ですか?ASCIIに固執するだけです。異なる文字を使用しても、ASCIIのみの言語での不要な制限を除いて、課題は何も追加されません。
—
FlipTack 16