このサイトには、ブラケットのバランス、およびブラケットのバランスの確認に関するいくつかの質問があります。バランスの取れたブラケットを何かに使う時が来たと私は提案します!
数学とプログラミングでは、ブラケットは泡のようなもので、内側のすべてが外側のすべてから隔離されているため、内側のすべてが平和に機能し、外側のすべてが1つのオブジェクトしか見ることができません。ただし、括弧のストリングは1次元ですが、通常、バブルは少なくとも2次元です。つまり、互いに接触したり、他のバブルの内側と外側を交差したりしない限り、バブルは自由に動き回ることができます。
チャレンジ
入力は、round ()
、square []
、curly、{}
またはangleのいずれかの単一タイプの一致した括弧のストリングです<>
。プログラムがどの種類を受け入れるかはあなた次第であり、1種類のブラケットのみを受け入れるプログラムは受け入れられます。(プログラムがそれらのいずれかを処理できる場合は架空のボーナス、同じ入力ですべてを処理できる場合は大規模な架空のボーナスポイント)。
出力は、同じ構成のバブルを生成し、2つの同一の文字列を持たないブラケットのすべての可能な再編成(元の入力を含む任意の順序)です。これは、技術的には場所を入れ替えることができる2つのバブルであるにもかかわらず、入力がの()()
場合、出力もちょうど()()
であることを意味します。大規模な想像上のボーナスの場合、{}[]()
当然、入力は6つの異なる要素/文字列/行の出力につながります。
バブルを別のバブルの内側から外側へ、または外側から内側へクロスさせずに、バブルを移動させて一方をもう一方にすることができる場合、2つのバブルの構成は「同じ」です。ネストされた括弧をツリーにたとえると(一致する各ペアは1つのノードであり、その中の一致するすべてのペアはサブノードであり、その中の一致する各ペアは再びそれらのサブノードであり、以下同様)、任意のノードのサブノードが順序付けられます、バブルの単一の構成は、ノードが順序付けられていないツリーです。
文字列のリストまたは単一文字のリストのリストまたは何らかの種類の空白を含む単一文字列を返す、stdout
またはstderr
何らかの形式の表示可能な空白文字(最も一般的には改行またはスペース)各再編成。
各再編成の末尾のスペース、および実際の出力の前後の改行および空のリスト要素の末尾と先行が許可されます。入力で受け入れるのと同じ種類のブラケットを出力で使用する必要があります。ここで指定されている角かっこ、改行、スペース、および使用するセパレータは別として、何も印刷しないでください(不可視/幅ゼロの文字を含む)。
スコアは、コード内のバイト数です。各言語の最低カウントが優先されます。想像上のボーナスを定期的に獲得するか大量に獲得するかは注意できますが、スコアには影響しません。実際のボーナスはあまりにも難しいため、バランスを取ることができません。
入出力の例
例1:
入力:
()(())
出力:
()(())
(())()
例2:
入力:
(()())()()
出力:
(()())()()
()(()())()
()()(()())
例3:
入力:
(()(()))()
出力:
((())())()
()((())())
(()(()))()
()(()(()))
((()))
例1で取得できないのはなぜですか?または()()()
?各入力の順列が欠落しているようです。