すべてのプログラマーは、括弧[]{}()<>
が本当に楽しいことを知っています。この楽しさを悪化させるために、織り込まれたブラケットのグループをキュートでファジーな図に変換できます。
のように、バランスの取れた括弧を含む文字列があるとしましょう[{][<(]})>(())
。ステップ1は、弦を時計回りに45度回転させることです。(Mathematicaでは、これはほとんどでできますRotate[ur_string,-pi/4]
)。最初のステップの結果は次のとおりです。
[
{
]
[
<
(
]
}
)
>
(
(
)
)
次に、各文字の間に斜めのスペースを追加します。
[
{
]
[
<
(
]
}
)
>
(
(
)
)
次に、一番左のブラケットから始めて、ブラケットと犯罪のパートナーとの間に四角形を描きます。
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
ブラケットの各ペアでこのプロセスを繰り返し+
、必要に応じて以前の文字をs で上書きします。
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
すべてがきれいで正方形になるまで続けます。
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
入力
入力は、バランスの取れたブラケットの単一行であり、他の文字はありません[]{}()<>
。各ブラケットはの1つです。各タイプのブラケットは個別にバランスが取られますが、異なるタイプが重複する場合があります(これにより、四角が面白く見えます)。末尾の改行はオプションです。
出力
出力は、ブラケット文字列から生成されたインターロック正方形パターンになります。末尾のスペースと末尾の改行はオプションですが、先頭の空白があってはなりません。
ゴール
これはコードゴルフであり、バイト数が最も少なくなります。
[[]]
2つの正方形を重ねて出力できますか、それとも一方の正方形をもう一方の内側に出力する必要がありますか?