Considere los siguientes bloques 3x3 que el algoritmo de cuadrados de marcha identificaría para cada celda (con ID etiquetada basada en 0):
0:
...
...
...
1:
...
...
\..
2:
...
...
../
3:
...
---
...
4:
..\
...
...
5:
/..
...
../
6:
.|.
.|.
.|.
7:
/..
...
...
8:
/..
...
...
9:
.|.
.|.
.|.
10:
..\
...
\..
11:
..\
...
...
12:
...
---
...
13:
...
...
../
14:
...
...
\..
15:
...
...
...
El objetivo de este desafío se le da una matriz 2D de ID de bloque, dibuje el diagrama de contorno completo al unir estas celdas más pequeñas. Tenga en cuenta que hay algunos casos repetidos (ej .: 0 y 15 visualmente son lo mismo)
Entrada
Su programa / función debe tomar como entrada una matriz rectangular de números enteros en 2D en el rango [0+a,15+a](donde aes un desplazamiento arbitrario de su elección; esto le permite usar indexación basada en cero o indexación basada en 1 para los bloques). Esto puede ser de cualquier fuente deseada (stdin, parámetro de función, etc.).
Salida
Su programa / función debe generar una sola cadena que represente el diagrama de contorno completo. No debe haber espacios en blanco iniciales / finales adicionales, pero se permite una nueva línea final. No debe haber separación entre bloques adyacentes vertical u horizontalmente.
Tenga en cuenta que no tiene que hacer ningún tipo de tratamiento especial para los bloques que se asignan a una "silla de montar"; simplemente dibuje el bloque con la ID dada tal cual.
La salida puede ser a cualquier sumidero deseado (stdout, valor de retorno, etc.)
Ejemplos
Todos los ejemplos a continuación usan ID de bloque basados en 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
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
............/........
.....................
.........../.........
........./...........
.....................
......../../\........
....../../....\......
...............---...
...../../.........\..
.....\/............|.
...................|.
...................|.
....................\
.....................
.....................
Puntuación
Este es el código de golf; el código más corto en bytes gana. Se aplican lagunas estándar.