ボックス化される可能性のある文字列を指定して、ボックスを切り替えます。これは、テストケースと説明で明らかになります。
入出力
入力フォーマット
入力は、CR、LF、またはCRLFで区切られた単一の文字列、または文字列のリストです。入力フォーマットはあなた次第です。
出力フォーマット
出力形式は入力と同じ形式でなければなりません。
説明+例
例としてボックス化された文字列を見てみましょう:
+-------------+
|Hello, World!|
+-------------+
ボックスを切り替えるには、最初と最後の行と最初と最後の列を削除します。(最後の行の終わりにオプションの末尾の改行がある)最後の行の後に末尾の空白がなく、どの行にも末尾の空白がなく、改行を数えないと想定することができます。
これは次のようになります。
Hello, World!
反対に
文字列がボックスにない場合は、ボックスを追加します。これはかなり簡単です。プリペンド+---...---+を持つ独自のライン上のkダッシュkライン毎に、次に最も長い直線の長さであり、そして、最も長い直線の長さと一致した後プリペンドとパイプ文字を追加する空白末尾とパッドを("|")。最後に、+---...---+最初の行と同じ設定を含む行を追加します。
例えば:
Hello, World!
になる:
+-------------+
|Hello, World!|
+-------------+
入力のどの行にも末尾の空白がないと想定するかもしれません。
ボックスを囲む文字列の別の例:
Hello,
World!
なる
+----------+
|Hello, |
| World!|
+----------+
まだボックス化する必要があるものの例:
+--------+
| |
--------+
になる:
+----------+
|+--------+|
|| ||
| --------+|
+----------+
ルール+仕様
- 標準抜け穴が適用されます
- ボックス化されているかどうかに関係なく、入力行の全体または各行の先頭または末尾に空白はありません。
- ボックスは
+、コーナー|として、垂直エッジと-水平サイドのみを持ちます。 - ボックスは、ボックスと見なされるように適切な場所にある必要があります。高さまたは幅が2の場合(つまり、コンテンツがない場合)は、ボックス化を解除する必要があります。これにより、ボックスの高さに応じて、一連の改行が生成されます。
- 入力にボックスがあり、テキストがボックスの外側にある場合、全体をボックス化する必要があります。
- プログラムは文字列の周囲全体をチェックする必要があります。外の1つの文字が正しくない場合(欠落している文字または本来あるべき文字とは異なる文字)、ボックス化するのではなくボックス化する必要があります。
- ボックス化されていない文字列自体にが含まれる場合があります
+ | -。ボックス化されていない文字列自体がボックスで囲まれている場合は、ボックス付きの文字列を返します。開梱は1度だけにしてください。
エッジケース
1:小箱
入力:
++
++
出力は空または改行です
入力:
+----+
+----+
出力が空または改行
入力:
++
||
||
++
出力は2つの改行または3つの改行です
2:部分的なボックス
入力:
+-------+
| Hello |
+ ------+
出力:
+---------+
|+-------+|
|| Hello ||
|+ ------+|
+---------+
3:ボックス外のテキスト
入力:
+-------+
a| Hello |
+-------+
出力:
+----------+
| +-------+|
|a| Hello ||
| +-------+|
+----------+