Розглянемо наступні блоки 3x3, які алгоритм маршируючих квадратів ідентифікував би для кожної комірки (з позначенням на основі 0, позначеним ідентифікатором):
0:
...
...
...
1:
...
...
\..
2:
...
...
../
3:
...
---
...
4:
..\
...
...
5:
/..
...
../
6:
.|.
.|.
.|.
7:
/..
...
...
8:
/..
...
...
9:
.|.
.|.
.|.
10:
..\
...
\..
11:
..\
...
...
12:
...
---
...
13:
...
...
../
14:
...
...
\..
15:
...
...
...
Мета цієї задачі - 2D матриця блоків ідентифікаторів, намалювати повний контурний графік, з'єднавши ці менші комірки разом. Зауважте, що є кілька повторних випадків (наприклад: 0 і 15 візуально однакові)
Вхідні дані
Ваша програма / функція повинна приймати як вхід 2D прямокутну матрицю цілих чисел у діапазоні [0+a,15+a]
(де a
довільне цілочисельне зсув на ваш вибір; це дозволяє використовувати нульову індексацію або індексацію на основі 1 для блоків). Це може бути з будь-якого потрібного джерела (stdin, параметр функції тощо).
Вихідні дані
Ваша програма / функція повинна виводити один рядок, що представляє повний контурний графік. Не повинно бути зайвих проміжних / кінцевих пробілів, але дозволена одна затримка нового рядка. Не повинно бути розділення між сусідніми блоками вертикально або горизонтально.
Зверніть увагу, що вам не доведеться робити якісь спеціальні обробки для блоків, які відображають на "сідло"; просто намалюйте блок із заданим ідентифікатором як є.
Вихід може бути для будь-якої потрібної раковини (stdout, значення повернення тощо)
Приклади
Усі приклади нижче використовують ідентифікатори блоків на основі 0.
case 1:
2 1
4 8
......
......
../\..
..\/..
......
......
case 2:
15 13 12 14 15
13 8 0 4 14
11 1 0 2 7
15 11 3 7 15
...............
......---......
...../...\.....
.../.......\...
...............
../.........\..
..\........./..
...............
...\......./...
.....\.../.....
......---......
...............
case 3:
12 12 12 8 4
0 0 0 0 2
0 0 0 2 7
0 2 3 7 15
........./....\
---------......
...............
...............
...............
............../
............/..
...............
.........../...
........./.....
......---......
...../.........
case 4:
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
............
.........---
...\..../...
..\/...|./..
.......|....
...../.|....
/...|...\..\
....|.......
....|.\.....
............
---.........
...../\.....
case 5:
0 0 0 0 6 15 15
0 0 0 0 6 15 15
0 0 0 0 6 15 15
0 0 0 2 7 15 15
0 0 2 5 14 15 15
0 2 5 8 4 12 14
0 4 8 0 0 0 6
0 0 0 0 0 0 4
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
............/........
.....................
.........../.........
........./...........
.....................
......../../\........
....../../....\......
...............---...
...../../.........\..
.....\/............|.
...................|.
...................|.
....................\
.....................
.....................
Оцінка балів
Це код гольфу; найкоротший код у байтах виграє. Застосовуються стандартні лазівки.