ASCIIボックスは次のようになります。
++ +---+ +------+ +---+ +---+
++ | | | | | | | |
| | | | | | | |
+-+ | | | | | | | |
+-+ | | | | | | +---+
+---+ | | | |
+--+ | | | | ++
| | | | | | ||
| | +------+ | | ||
+--+ | | ||
+---+ ||
||
+-----+ ||
+------------+ | | ++
| | | |
| | | |
+------------+ +-----+
破裂した同じASCIIボックスの例を次に示します。
++ +- -+ +- -+ +- -+ +- -+
++ | - | | - - | | - | | - |
| | | -- | | | | |
+-+ | | | | " | - |
+-+ | - | || | | +- -+
+- -+ | | | |
+--+ | -- | | | ++
| | | - - | " ||
| | +- -+ | | ||
+--+ | - | | |
+- -+ | |
-- ||
- - +- -+ ||
+- - - -+ | - - | ++
| -- -- | | = |
| -- -- | | - - |
+- - - -+ +- -+
- -
--
コピーしやすい形式のこれらすべてのテストケースボックスへのリンクを次に示します。順序は、すべての入力に続いて同じ順序のすべての出力です。
あなたの目標は、ASCIIボックスを入力として受け取り、内包されたボックスを返すことです。内破の規則は次のとおりです。
- 「+」は変更されません。「-」も「|」もしません 「+」に直接隣接
- コーナーから始まり、「-」と「|」同じキャラクターがコーナーに近づいたよりも1スペース分内側に移動します。「-」および「|」同じ場所に移動することも、移動することもありません。
- 「-」と「-」が同じスポットに移動した場合、そのスポットに「=」を入れます。「|」および「|」同じ場所に移動し、その場所に「」を入れます。これらは、同じ場所で反対方向に移動するそれぞれのキャラクターの2つとしてカウントされます。
- 2つの「-」または2つの「|」左下の例に見られるように、互いを越えて移動できます。
- ボックスが十分に細い場合、同じ方法で外側に拡大し始め、常に一部から始まった側から離れます。
- 結果は、x方向とy方向の両方で中心線を挟んで対称になります(改行は無視されます)。これにはスペースが含まれます。そのため、結果にはスペースを満たすためにスペースを埋め込む必要があります。
ルールの詳細:
- これはコードゴルフなので、バイト単位の最短プログラムが優先されます。
- 標準の抜け穴が適用されます。
- 各行が改行文字で終わると仮定できます。
- 入力文字列の文字は「+」、「-」、「|」、「」、および「\ n」(改行)のみであり、出力文字列は「=」を追加して同じルールに従う必要がありますおよび "可能な文字として。
- オプションで、最後の行の末尾に単一の末尾の改行を含めることができます。
- 処理する必要がある最小のASCIIボックスは、左上の例です。すべてのASCIIボックスの隅には、正確に4つの「+」があります。
m x n次のm,nような整数のサイズのボックスを処理する必要があります2<=m,n<256(可能な最大の文字列サイズ255*(255+1))- 入力として常に単一の有効なASCIIボックスを取得すると想定できます。
||ようにその例を必要としている"か何か...
"か?"3ワイド以上にのみ表示されると思いますか?
"行きますか?左側ですか、それとも右側ですか?両方にすることはできませんが、結果が対称的であるため、どちらにすることもできません。