Considérez les blocs 3x3 suivants que l' algorithme des carrés de marche identifierait pour chaque cellule (avec un ID étiqueté basé sur 0):
0:
...
...
...
1:
...
...
\..
2:
...
...
../
3:
...
---
...
4:
..\
...
...
5:
/..
...
../
6:
.|.
.|.
.|.
7:
/..
...
...
8:
/..
...
...
9:
.|.
.|.
.|.
10:
..\
...
\..
11:
..\
...
...
12:
...
---
...
13:
...
...
../
14:
...
...
\..
15:
...
...
...
Le but de ce défi est de fournir une matrice 2D d'ID de bloc, de dessiner le tracé de contour complet en juxtaposant ces petites cellules ensemble. Notez qu'il y a des cas répétés (ex .: 0 et 15 visuellement sont les mêmes)
Contribution
Votre programme / fonction doit prendre en entrée une matrice rectangulaire 2D d'entiers dans la plage [0+a,15+a](où aest un décalage d'entier arbitraire de votre choix; cela vous permet d'utiliser une indexation à base zéro ou une indexation à base 1 pour les blocs). Cela peut provenir de n'importe quelle source souhaitée (stdin, paramètre de fonction, etc.).
Production
Votre programme / fonction doit produire une seule chaîne représentant le tracé de contour complet. Il ne doit pas y avoir d'espace supplémentaire de début / fin, mais une seule nouvelle ligne de fin est autorisée. Il ne doit pas y avoir de séparation verticale ou horizontale entre les blocs adjacents.
Notez que vous n'avez pas à effectuer de traitement spécial pour les blocs qui correspondent à une "selle"; dessinez simplement le bloc avec l'ID donné tel quel.
La sortie peut être vers n'importe quel récepteur souhaité (sortie standard, valeur de retour, etc.)
Exemples
Tous les exemples ci-dessous utilisent des ID de bloc basés sur 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
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
............/........
.....................
.........../.........
........./...........
.....................
......../../\........
....../../....\......
...............---...
...../../.........\..
.....\/............|.
...................|.
...................|.
....................\
.....................
.....................
Notation
C'est le golf de code; le code le plus court en octets gagne. Des échappatoires standard s'appliquent.