文字列として表される文字のブロックを受け取り、アルファベットで隣接する文字が接続された同様の文字列を出力または返すプログラムまたは関数を作成する必要があります。
視覚的な例(の形式input => output
):
b d b d
|\ /|
| \ / |
=> | X |
| / \ |
e |/ \e
c a c a
詳細
- 入力は、スペース、改行、および最初の
N
小文字をそれぞれ1つだけ含む文字列になります。1 <= N <= 26
- 入力の行にはスペースが埋め込まれ、完全な長方形のブロックが作成されます。
- アルファベットで隣接する文字のペアはすべて、同じ行、列、または対角線上にあり、を使用して直線のアスキー線で接続する必要があります
\ / | or -
。(行の長さは0である場合があります。) 次のタイプの2行オーバーラップを処理する必要があります。
/ and \ become X | and - become + / and / become / \ and \ become \ | and | become | - and - become - [letter] and [anything] become [letter]
他の種類の2行のオーバーラップは発生しません。
- 3本以上の線が重なる場合、それらのペアはいずれも有効な重なりの1つであることが保証されます。(たとえば、
[letter] / |
トリプレットは発生しません) - スペースを
\ / | - X and +
入力と出力に変更することを除けば、同じでなければなりません。 - 末尾の改行はオプションですが、入力と出力で同じでなければなりません。
- これはコードゴルフなので、最短のエントリが優先されます。
例
入力:
b d
h gi
e f
c a
出力:
b d
|\ /|
| \ / |
| X h+--gi
| / \ | |
|/ \e--f
c a
入力:
dk j
b l
c fg
a m
i h
e
出力:
dk----j
/|| /
b / |l /
|X | \/
c \ fg/\
\|/\ \
a \ m
/| \
i-+----h
e
入力:
eti sqjh k p u cfm vb owgzyx rnd la
出力:
eti--sqjh-k--p--u--cfm-vb-owgzyx-rnd-la
入力:
a
出力:
a
本当に素敵なアスキーアート
—
オプティマイザー
Xと+の両方のオーバーラップが同じスポットにある場合はどうなりますか?それとも、説明すべきケースではありませんか?
—
-theonlygusti
@theonlygusti例として「つ以上のラインはそれらの任意の対が有効な重複のいずれかになり重複する場合」
—
randomra
/
と-
無効重複あるX
と+
(/ \ - and |
)同じ位置で発生することができません。
まだ混乱しています。例を挙げてみませんか?
—
-theonlygusti
@theonlygusti:基本的に、説明すべきケースではありません
—
Claudiu