Défi
Ecrivez un programme qui prend un tableau d'entiers 11x11 et construit un bloc de construction 3D ASCII, où chaque valeur du tableau représente la hauteur d'une colonne de blocs aux coordonnées correspondant à la position du tableau. Une hauteur négative est une colonne "flottante" - seul le bloc supérieur est visible.
Exemple
__________________
___ /\__\__\__\__\__\__\
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, \/\__\ \/__/__/__/__/ \/\__\
\/\__\_________ ______\/\__\
\/\__\__\__\__\ /\__\__\__\__\
\/__/__/__/__/ \/__/__/__/__/
Contribution
L'entrée sera une liste de 121 nombres entiers, soit lus à partir de stdin (le choix du séparateur dépend de vous), soit transmis sous forme de tableau (peut être 1D ou 2D).
Les hauteurs seront comprises entre -11 et 11.
Sortie
Le bâtiment généré peut être écrit sur stdout, affiché directement à l'écran ou renvoyé sous forme de chaîne séparée par une nouvelle ligne.
Les espaces de début et de fin sont autorisés.
Règles de construction
La forme d'un bloc 3D individuel ressemble à ceci:
___
/\__\
\/__/
Et un cube de blocs 2x2x2 ressemble à ceci:
______
/\__\__\
/\/\__\__\
\/\/__/__/
\/__/__/
Lorsque des blocs se chevauchent, un bloc supérieur a priorité sur un bloc inférieur, les blocs situés en avant ont priorité sur ceux situés plus en arrière et les blocs situés à gauche ont priorité sur ceux situés à droite. Le seul cas particulier est que la ligne supérieure d'un bloc ne doit jamais écraser un caractère autre qu'un espace derrière ce dernier.
L’interprétation des hauteurs de colonne s’explique le mieux en regardant une représentation 2D du côté.
HEIGHT: 1 2 3 -3 -2 -1
__ __
__ |__| |__| __
__ |__| |__| |__| __
|__| |__| |__| |__|
Cas de test
Si vous souhaitez essayer votre solution sur quelques entrées supplémentaires, j'ai mis en place quelques cas de test ici .
Gagnant
C'est du code-golf , donc la soumission la plus courte (en octets) gagne.