標高の長方形のマトリックスを指定して、その輪郭を描きます。
仕事
の場合、2つの要素x
とy
は同じ輪郭レベルにありますfloor(x/10) == floor(y/10)
。たとえば、52
と58
は同じ等高線レベルにありますが58
、そうで64
はありません。
輪郭を描く動作は次のように定義されます。すべての要素についてe
、次のように選択した2文字の文字列に置き換えます。
- 最初の文字は
" "
、下の要素e
が同じ輪郭レベルにあるe
か、下の要素がないかe
、"_"
そうでない場合 - 2番目の文字は
" "
、右側の要素がe
同じ輪郭レベルにあるe
か、右側の要素がない場合、e
または"|"
そうでない場合
行内の要素が結合され、次に行が改行で結合されます。
例
入力が[[5,20],[3,6]]
、次のように視覚化されているとしましょう
5 20
3 6
最初に見てください5
。以来、3
同じ等高線レベルであり5
、最初の文字です" "
。20
はと等高線レベルにないため5
、2番目の文字は"|"
です。
今、私たちは見てください20
。6
はと等高線レベルにないため20
、最初の文字は"_"
です。の右側に要素がないため20
、2番目の文字は" "
です。
今、私たちは見てください3
。下3
に要素がないので、最初の文字は" "
です。以来、6
同じ等高線レベルにあり3
、第二の文字があります" "
。
今、私たちは見てください6
。下6
に要素がないので、最初の文字は" "
です。の右側に要素がないため6
、2番目の文字は" "
です。
これらの2文字の文字列に基づいて、getを置き換える[[" |","_ "],[" "," "]]
。これらを結合すると、次の出力が得られます
|_
ルール
- 入力行列は常に長方形で、正の整数で構成されます。
- 末尾のスペースまたは改行は任意の量(0を含む)であり、一貫性がある必要はありません。
- 同じ結果が得られる限り、同じアルゴリズムに従う必要はありません。
- プログラムまたは関数は、改行で区切られた文字列、文字列のリスト、または同等のものを出力する場合があります。
- これはcode-golfであるため、バイト単位の最短コードが優先されます。
テストケース
input
output
[[1,5,8,9],[3,11,13,8],[7,14,10,9],[4,8,7,6]]
_ _
| |
|_ _|
[[0,10,20,30,40,50,60,70,80,90],[0,0,10,10,20,20,30,30,40,40],[0,0,0,10,10,10,20,20,20,30],[0,0,0,0,10,10,10,10,20,20],[0,0,0,0,0,10,10,10,10,10],[0,0,0,0,0,0,10,10,10,10],[0,0,0,0,0,0,0,10,10,10],[0,0,0,0,0,0,0,0,10,10],[0,0,0,0,0,0,0,0,0,10],[0,0,0,0,0,0,0,0,0,0]]
|_|_|_|_|_|_|_|_|_
|_ |_ _|_ _|_ _
|_ |_ _ |_
|_ |_ _
|_
|_
|_
|_
|_
[[5,5,5,5,5,5,5,5,5,5,5],[5,10,10,10,10,10,10,10,10,10,5],[5,10,15,15,15,15,15,15,15,10,5],[5,10,15,20,20,20,20,20,15,10,5],[5,10,15,20,25,25,25,20,15,10,5],[5,10,15,20,25,30,25,20,15,10,5],[5,10,15,20,25,25,25,20,15,10,5],[5,10,15,20,20,20,20,20,15,10,5],[5,10,15,15,15,15,15,15,15,10,5],[5,10,10,10,10,10,10,10,10,10,5],[5,5,5,5,5,5,5,5,5,5,5]]
_ _ _ _ _ _ _ _ _
| |
| _ _ _ _ _ |
| | | |
| | _ | |
| | |_| | |
| | | |
| |_ _ _ _ _| |
| |
|_ _ _ _ _ _ _ _ _|
[[35,32,29,26,25,25,25,26,29,32,35],[32,28,25,22,20,20,20,22,25,28,32],[29,25,21,18,15,15,15,18,21,25,29],[26,22,18,14,11,10,11,14,18,22,26],[25,20,15,11,7,5,7,11,15,20,25],[25,20,15,10,5,0,5,10,15,20,25],[25,20,15,11,7,5,7,11,15,20,25],[26,22,18,14,11,10,11,14,18,22,26],[29,25,21,18,15,15,15,18,21,25,29],[32,28,25,22,20,20,20,22,25,28,32],[35,32,29,26,25,25,25,26,29,32,35]]
_| |_
_| _ _ _ _ _ |_
_| |_
| _ _ _ |
| | | |
| | | |
| |_ _ _| |
|_ _|
_ |_ _ _ _ _| _
|_ _|
| |