入力として文字列を受け取り、入力がASCIIツリーの場合は出力または返すプログラムまたは関数を作成する必要があります。
_
\/ /
\_/
|
|
ASCIIツリーは文字/ \ | _ spaces
とで構成されますnewlines
。
非空白文字は、セルの2つのエッジポイントをラインセグメントで接続します。
/
左下隅と右上隅を接続します\
右下隅と左上隅を接続します|
下端と上端の中間点を接続します_
左下隅と右下隅、および下端の中間点を接続します
(なお、この手段|
のみで接続することができます|
か_
ではなくて/
か\
。)
次の規則が適用される場合、ASCIIピクチャはツリーと呼ばれます。
- 正確に1つの文字の正確に1つのポイント(ルート)が最後の行の下端に接触します。
次の方法で、任意の線セグメントの任意のポイントに到達できます。
- ルートから始まる
- 線分のみを使用する
- 下方向には決して行かない(横方向にも下がらない)
入力
- 文字列の文字から成る
/ \ | _ space
とnewline
少なくとも1つの非空白文字を含みます。 次の2つの入力形式から選択できます。
- ツリーの周りに不要な空白はありません(例で見られます)。
- すべての行を同じ長さにするための行の右側のスペースを除いて、ツリーの周りに不要な空白はありません(例にあります)。
末尾の改行はオプションです。
出力
例
有効なツリー:
|
_
\/ /
\_/
|
|
/ / \/
\ \____/
\/
/
/
\___/
/ \
\___/
|
|
__/
_/
/
____
\ ___
\ \/
\/\_____/
\/ \/
\__/
|
|
無効なツリー(入力の一部ではない追加の説明付き):
\/
\_______/
\__ /
| \_/ <- reachable only on with downward route
|
_ <- multiple roots
\/ <- multiple root characters
/\ <- multiple roots
| <- unreachable part
|
__/
/ <- unreachable parts
|
\____/
| | <- multiple roots
_\__/ <- unreachable parts (_ and \ don't connect to each other)
|
これはコードゴルフなので、最短のエントリーが勝ちます。