Considera i seguenti blocchi 3x3 che l' algoritmo dei quadrati in marcia identificherebbe per ogni cella (con ID con etichetta a base 0):
0:
...
...
...
1:
...
...
\..
2:
...
...
../
3:
...
---
...
4:
..\
...
...
5:
/..
...
../
6:
.|.
.|.
.|.
7:
/..
...
...
8:
/..
...
...
9:
.|.
.|.
.|.
10:
..\
...
\..
11:
..\
...
...
12:
...
---
...
13:
...
...
../
14:
...
...
\..
15:
...
...
...
L'obiettivo di questa sfida è ottenere una matrice 2D di ID blocco, disegnare l'intero diagramma di contorno piastrellando insieme queste celle più piccole. Nota che ci sono alcuni casi ripetuti (es .: 0 e 15 visivamente sono gli stessi)
Ingresso
Il tuo programma / funzione dovrebbe assumere come input una matrice rettangolare 2D di numeri interi nell'intervallo [0+a,15+a](dove si atrova uno spostamento di numero intero arbitrario di tua scelta; ciò ti consente di utilizzare l'indicizzazione in base zero o l'indicizzazione in base 1 per i blocchi). Questo può provenire da qualsiasi sorgente desiderata (stdin, parametro di funzione, ecc.).
Produzione
Il tuo programma / funzione dovrebbe generare una singola stringa che rappresenta il diagramma di contorno completo. Non ci dovrebbero essere spazi bianchi iniziali / finali aggiuntivi, ma è consentita una singola riga finale finale. Non ci dovrebbe essere alcuna separazione tra blocchi adiacenti in verticale o in orizzontale.
Si noti che non è necessario eseguire alcun tipo di trattamento speciale per i blocchi che corrispondono a una "sella"; basta disegnare il blocco con l'ID fornito così com'è.
L'output può essere su qualsiasi sink desiderato (stdout, valore di ritorno, ecc.)
Esempi
Tutti gli esempi seguenti utilizzano ID di blocco basati su 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
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
............/........
.....................
.........../.........
........./...........
.....................
......../../\........
....../../....\......
...............---...
...../../.........\..
.....\/............|.
...................|.
...................|.
....................\
.....................
.....................
punteggio
Questo è il codice golf; vince il codice più breve in byte. Si applicano scappatoie standard.