Betrachten Sie die folgenden 3x3-Blöcke, die der Marschquadrat-Algorithmus für jede Zelle identifizieren würde (mit 0-basierter beschrifteter ID):
0:
...
...
...
1:
...
...
\..
2:
...
...
../
3:
...
---
...
4:
..\
...
...
5:
/..
...
../
6:
.|.
.|.
.|.
7:
/..
...
...
8:
/..
...
...
9:
.|.
.|.
.|.
10:
..\
...
\..
11:
..\
...
...
12:
...
---
...
13:
...
...
../
14:
...
...
\..
15:
...
...
...
Das Ziel dieser Herausforderung ist es, eine 2D-Matrix von Block-IDs zu erhalten. Zeichnen Sie das vollständige Konturdiagramm, indem Sie diese kleineren Zellen zusammenkacheln. Beachten Sie, dass es einige wiederholte Fälle gibt (Beispiel: 0 und 15 sind visuell gleich)
Eingang
Ihr Programm / Ihre Funktion sollte eine rechteckige 2D-Matrix von Ganzzahlen im Bereich als Eingabe verwenden [0+a,15+a]
(wobei a
eine beliebige Ganzzahlverschiebung Ihrer Wahl vorliegt; dies ermöglicht Ihnen die Verwendung einer nullbasierten Indizierung oder einer 1-basierten Indizierung für die Blöcke). Dies kann von jeder gewünschten Quelle stammen (Standard, Funktionsparameter usw.).
Ausgabe
Ihr Programm / Ihre Funktion sollte eine einzelne Zeichenfolge ausgeben, die das vollständige Konturdiagramm darstellt. Es sollte kein zusätzliches Leerzeichen für führende / nachfolgende Zeilen geben, aber eine einzelne nachfolgende neue Zeile ist zulässig. Es sollte keine vertikale oder horizontale Trennung zwischen benachbarten Blöcken geben.
Beachten Sie, dass Sie für Blöcke, die einem "Sattel" zugeordnet sind, keine spezielle Behandlung durchführen müssen. Zeichnen Sie einfach den Block mit der angegebenen ID wie er ist.
Die Ausgabe kann an eine beliebige Senke erfolgen (Standardausgabe, Rückgabewert usw.)
Beispiele
Alle folgenden Beispiele verwenden 0-basierte Block-IDs.
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
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
............/........
.....................
.........../.........
........./...........
.....................
......../../\........
....../../....\......
...............---...
...../../.........\..
.....\/............|.
...................|.
...................|.
....................\
.....................
.....................
Wertung
Das ist Code Golf; Der kürzeste Code in Bytes gewinnt. Es gelten Standardlücken.