Cho một ma trận hình chữ nhật của độ cao, vẽ các đường viền của nó.
Bài tập
Hai yếu tố x
và y
trên cùng một mức đường viền nếu floor(x/10) == floor(y/10)
. Ví dụ, 52
và 58
ở cùng một mức đường viền, nhưng 58
và 64
không.
Hành động vẽ các đường viền được định nghĩa như sau: Đối với mọi phần tử e
, thay thế nó bằng một chuỗi hai char được chọn như sau:
- ký tự đầu tiên là
" "
nếu phần tử bên dướie
ở cùng mức đường viền vớie
hoặc nếu không có phần tử nào ở bên dướie
và"_"
nếu không - ký tự thứ hai là
" "
nếu phần tử ở bên phảie
ở cùng mức đường viền vớie
hoặc không có phần tử nào ở bên phảie
và"|"
nếu không
Các yếu tố trong các hàng được nối với nhau, sau đó các hàng được nối với nhau bằng các dòng mới.
Thí dụ
Giả sử đầu vào là [[5,20],[3,6]]
, được hình dung như
5 20
3 6
Trước tiên chúng tôi nhìn vào 5
. Vì 3
là trên cùng một đường viền như 5
, ký tự đầu tiên là " "
. Vì 20
không ở cùng mức đường viền như 5
, ký tự thứ hai là "|"
.
Bây giờ chúng tôi nhìn vào 20
. Vì 6
không ở cùng mức đường viền như 20
, ký tự đầu tiên là "_"
. Vì không có yếu tố nào ở bên phải 20
, nên ký tự thứ hai là " "
.
Bây giờ chúng tôi nhìn vào 3
. Vì không có yếu tố nào bên dưới 3
, nên ký tự đầu tiên là " "
. Vì 6
ở cùng cấp độ đường viền với 3
, ký tự thứ hai là " "
.
Bây giờ chúng tôi nhìn vào 6
. Vì không có yếu tố nào bên dưới 6
, nên ký tự đầu tiên là " "
. Vì không có yếu tố nào ở bên phải 6
, nên ký tự thứ hai là " "
.
Dựa trên các chuỗi hai char này, chúng tôi thực hiện thay thế để có được [[" |","_ "],[" "," "]]
. Kết hợp những thứ này lại với nhau, chúng ta có được một đầu ra của
|_
Quy tắc
- Ma trận đầu vào sẽ luôn là hình chữ nhật và bao gồm các số nguyên dương.
- Không gian lưu trữ hoặc dòng mới có thể ở bất kỳ số lượng nào (bao gồm 0) và không nhất quán theo bất kỳ cách nào.
- Bạn không phải tuân theo cùng một thuật toán miễn là bạn tạo ra kết quả tương tự.
- Chương trình hoặc chức năng của bạn có thể xuất ra một chuỗi phân tách dòng mới, danh sách các chuỗi hoặc tương đương.
- Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte thắng.
Các trường hợp thử nghiệm
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]]
_| |_
_| _ _ _ _ _ |_
_| |_
| _ _ _ |
| | | |
| | | |
| |_ _ _| |
|_ _|
_ |_ _ _ _ _| _
|_ _|
| |