Давши прямокутну матрицю висот, намалюйте її контури.
Завдання
Два елементи x
і y
знаходяться на одному рівні контуру, якщо floor(x/10) == floor(y/10)
. Наприклад, 52
і 58
знаходяться на тому ж рівні контуру, але 58
і 64
не є.
Акт малювання контурів визначається наступним чином: Для кожного елемента e
замініть його дворядним рядком, вибраним так:
- перший символ - це
" "
якщо елемент нижчеe
знаходиться на тому ж рівні контуру, якe
і якщо немає елемента внизуe
та в"_"
іншому випадку - другий символ полягає в тому
" "
випадку, якщо елемент праворучe
знаходиться на тому ж рівні контуру,e
або немає елемента праворучe
і в"|"
іншому випадку
Елементи всередині рядків з'єднуються разом, потім рядки з'єднуються між собою новими рядками.
Приклад
Скажімо, вхід є [[5,20],[3,6]]
, візуалізується як
5 20
3 6
Ми спочатку розглядаємо 5
. Оскільки 3
знаходиться на тому ж рівні контуру 5
, що і перший символ " "
. Оскільки 20
не знаходиться на тому ж рівні контуру 5
, що й другий символ "|"
.
Тепер ми дивимось 20
. Оскільки 6
не знаходиться на тому ж рівні контуру 20
, що і перший символ "_"
. Оскільки праворуч від елемента немає 20
, другий символ є " "
.
Тепер ми дивимось 3
. Оскільки внизу немає елемента 3
, перший символ є " "
. Оскільки 6
знаходиться на тому ж рівні контуру 3
, що і другий символ " "
.
Тепер ми дивимось 6
. Оскільки внизу немає елемента 6
, перший символ є " "
. Оскільки праворуч від елемента немає 6
, другий символ є " "
.
На основі цих двох знаків, ми робимо заміни, щоб отримати [[" |","_ "],[" "," "]]
. Об’єднавши їх разом, ми отримуємо результат
|_
Правила
- Вхідна матриця завжди буде прямокутною і складається з натуральних чисел.
- Пробіли або нові рядки можуть бути в будь-якій кількості (включаючи 0) і не повинні бути узгодженими жодним чином.
- Вам не доведеться дотримуватися одного алгоритму, поки ви даєте однакові результати.
- Ваша програма або функція може вивести рядок, відокремлений рядками, список рядків або еквівалент.
- Це код-гольф , тому найкоротший код у байтах виграє.
Випробування
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]]
_| |_
_| _ _ _ _ _ |_
_| |_
| _ _ _ |
| | | |
| | | |
| |_ _ _| |
|_ _|
_ |_ _ _ _ _| _
|_ _|
| |