ASCIIアートは楽しいです。最新のテキストエディターは、テキストの操作に非常に優れています。現代のプログラミング言語は仕事に任せていますか?
ASCIIアート操作の一般的なタスクの1つは、2文字の間の長方形にテキストをトリミングすることです。これは、このチャレンジで実装する必要があるタスクです。
詳細
プログラムには3つの入力があります。
- 最初はブロックの「開始」文字です-左上隅をマークします
- 2番目はブロックの「終了」文字です-右下隅をマークします
- 3番目は、文字列、文字列のリスト、ファイル名など、複数行のテキストの形式です。
結果は、指定された入力間の四角形にトリミングされた複数行テキスト(上記の形式のいずれか)になります。最初の2つの入力は一意でない場合があることに注意してください。
エッジケース
ボックスには常に少なくとも2つのボリュームが必要です。したがって、これらは次のとおりです。
() (
)
あるボックスが、これらは:
)( ) (
( )
(start = (およびend =を使用))ではありません。
入力には1つのボックスのみが含まれます。したがって、開始文字と終了文字は、同じ文字である場合を除き、一度だけ発生する必要があります。ただし、同じ文字の場合、正確に2回出現する必要があります。
さらに、入力の各行は、少なくとも行の先頭から入力のボックスの右端までの距離と同じ長さでなければなりません。
プログラムは無効な入力を処理する必要はありません。その結果、未定義の動作が発生する場合があります。
ルール
典型的なコードゴルフ規則が適用されます。最短のコードが優先されます。
例
晴れた日: start: ( end: ) input:
This is some text
. (but this text
is in a box ).
So only it is important.
出力:
(but this text
is in a box )
水平スペースの除去にも注意してください。ASCIIアート作物は2Dです。
雨の日: start: ( end: ) input:
This is some text (
But is that even )
really a box?
出力:
(
)
同じ開始/終了: start: / end: / input:
Oh, I get how this could be useful
/----------------------------\
| All this text is in a box! |
\----------------------------/
出力:
/----------------------------\
| All this text is in a box! |
\----------------------------/
無効入力: start: ( end: ) input:
Boxes are rectangular ( so this has
0 volume ) which is illegal.
無効な入力2: start: ( end: ) input:
(The lines must already be square
so this line that is too short
relative to this end, is illegal)