Diberi matriks ketinggian persegi panjang, gambarkan konturnya.
Tugas
Dua elemen x
dan y
berada pada level kontur yang sama jika floor(x/10) == floor(y/10)
. Misalnya, 52
dan 58
berada pada level kontur yang sama, tetapi 58
dan 64
tidak.
Tindakan menggambar kontur didefinisikan sebagai berikut: Untuk setiap elemen e
, gantikan dengan string dua karakter yang dipilih sebagai berikut:
- karakter pertama adalah
" "
jika elemen di bawahe
ini pada tingkat kontur yang sama dengane
atau jika tidak ada elemen di bawah inie
dan"_"
sebaliknya - karakter kedua adalah
" "
jika elemen di sebelah kanane
berada pada level kontur yang sama dengane
atau tidak ada elemen di sebelah kanane
dan"|"
sebaliknya
Elemen-elemen dalam baris digabungkan bersama, kemudian baris digabungkan bersama dengan baris baru.
Contoh
Katakanlah inputnya [[5,20],[3,6]]
, divisualisasikan sebagai
5 20
3 6
Kami pertama kali melihat 5
. Karena 3
berada pada level kontur yang sama dengan 5
, karakter pertama adalah " "
. Karena 20
tidak pada level kontur yang sama dengan 5
, karakter kedua adalah "|"
.
Sekarang kita lihat 20
. Karena 6
tidak pada level kontur yang sama dengan 20
, karakter pertama adalah "_"
. Karena tidak ada elemen di sebelah kanan 20
, karakter kedua adalah " "
.
Sekarang kita lihat 3
. Karena tidak ada elemen di bawah ini 3
, karakter pertama adalah " "
. Karena 6
berada pada level kontur yang sama dengan 3
, karakter kedua adalah " "
.
Sekarang kita lihat 6
. Karena tidak ada elemen di bawah ini 6
, karakter pertama adalah " "
. Karena tidak ada elemen di sebelah kanan 6
, karakter kedua adalah " "
.
Berdasarkan dua karakter ini, kami melakukan penggantian untuk mendapatkan [[" |","_ "],[" "," "]]
. Bergabung bersama ini, kami mendapatkan output dari
|_
Aturan
- Matriks input akan selalu berbentuk persegi panjang dan terdiri dari bilangan bulat positif.
- Ruang tambahan atau baris baru mungkin dalam jumlah berapa pun (termasuk 0) dan tidak harus konsisten dengan cara apa pun.
- Anda tidak harus mengikuti algoritma yang sama selama Anda menghasilkan hasil yang sama.
- Program atau fungsi Anda dapat menampilkan string yang dipisahkan baris baru, daftar string, atau yang setara.
- Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Uji Kasus
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]]
_| |_
_| _ _ _ _ _ |_
_| |_
| _ _ _ |
| | | |
| | | |
| |_ _ _| |
|_ _|
_ |_ _ _ _ _| _
|_ _|
| |