Herausforderung
Schreiben Sie ein Programm, das ein 11x11-Array von Ganzzahlen verwendet und ein 3D-ASCII-Blockgebäude erstellt, wobei jeder Wert im Array die Höhe einer Blockspalte an den Koordinaten darstellt, die mit der Arrayposition übereinstimmen. Eine negative Höhe ist eine "schwebende" Spalte - nur der obere Block ist sichtbar.
Beispiel
__________________
___ /\__\__\__\__\__\__\
3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /\__\ /\/\__\__\__\__\__\__\
2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /\/__/ /\/\/__/__/__/__/__/__/
2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /\/\__\ /\/\/\__\ /\/\/__/
1, 0, 0, 7,-7,-7,-7,-7, 7, 0, 0, \/\/\__\ /\/\/\/__/ /\/\/__/
0, 0, 0, 7,-7,-7,-7,-7, 7, 0, 0, \/\/__/ /\/\/\/\__\ /\/\/__/
0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, \/\__\ /\/\/\/\/__/ /\/\/__/
0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, \/__/ \/\/\/\/\__\_ \/\/__/
1, 0, 0, 4, 3, 2, 1, 0, 0, 0, 1, \/\/\/\/__/_\_ \/__/
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, ___ \/\/\/__/__/_\_ ___
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /\__\ \/\/__/__/__/_\ /\__\
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, \/\__\ \/__/__/__/__/ \/\__\
\/\__\_________ ______\/\__\
\/\__\__\__\__\ /\__\__\__\__\
\/__/__/__/__/ \/__/__/__/__/
Eingang
Die Eingabe ist eine Liste von 121 Ganzzahlen, die entweder von stdin gelesen (die Wahl des Trennzeichens liegt bei Ihnen) oder als Array übergeben werden (kann 1D oder 2D sein).
Die Höhen liegen im Bereich von -11 bis 11.
Ausgabe
Das generierte Gebäude kann in stdout geschrieben, direkt auf dem Bildschirm angezeigt oder als durch Zeilenumbrüche getrennte Zeichenfolge zurückgegeben werden.
Führende und nachfolgende Leerzeichen sind zulässig.
Gebäuderegeln
Die Form eines einzelnen 3D-Blocks sieht folgendermaßen aus:
___
/\__\
\/__/
Und ein 2x2x2-Blockwürfel sieht so aus:
______
/\__\__\
/\/\__\__\
\/\/__/__/
\/__/__/
Wenn sich Blöcke überlappen, hat ein höherer Block Vorrang vor einem niedrigeren, vorne liegende Blöcke haben Vorrang vor den weiter hinten liegenden und links liegende Blöcke haben Vorrang vor den rechts liegenden Blöcken. Der einzige Sonderfall ist, dass die oberste Zeile eines Blocks niemals ein dahinterstehendes Nicht-Leerzeichen überschreiben darf.
Die Interpretation der Spaltenhöhen lässt sich am besten anhand einer 2D-Darstellung von der Seite erklären.
HEIGHT: 1 2 3 -3 -2 -1
__ __
__ |__| |__| __
__ |__| |__| |__| __
|__| |__| |__| |__|
Testfälle
Wenn Sie Ihre Lösung an einigen weiteren Eingaben ausprobieren möchten, habe ich hier einige Testfälle zusammengestellt .
Gewinnen
Dies ist Code-Golf , also gewinnt die kürzeste Übermittlung (in Bytes).