Desafío
Escriba un programa que tome una matriz de enteros de 11x11 y construya un edificio de bloques ASCII 3D, donde cada valor en la matriz representa la altura de una columna de bloques en las coordenadas que coinciden con la posición de la matriz. Una altura negativa es una columna "flotante": solo se ve el bloque superior.
Ejemplo
__________________
___ /\__\__\__\__\__\__\
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, \/\__\ \/__/__/__/__/ \/\__\
\/\__\_________ ______\/\__\
\/\__\__\__\__\ /\__\__\__\__\
\/__/__/__/__/ \/__/__/__/__/
Entrada
La entrada será una lista de 121 enteros, ya sea leídos de stdin (la elección del separador depende de usted) o pasados como una matriz (puede ser 1D o 2D).
Las alturas estarán en el rango de -11 a 11.
Salida
El edificio generado puede escribirse en stdout, mostrarse directamente en la pantalla o devolverse como una cadena separada por una nueva línea.
Se permiten espacios en blanco iniciales y finales.
Reglas de construcción
La forma de un bloque 3D individual se ve así:
___
/\__\
\/__/
Y un cubo de bloques de 2x2x2 se ve así:
______
/\__\__\
/\/\__\__\
\/\/__/__/
\/__/__/
Cuando los bloques se superponen, un bloque más alto tiene prioridad sobre uno más bajo, los bloques en el frente tienen prioridad sobre los que están más atrás, y los bloques a la izquierda tienen prioridad sobre los que están a la derecha. El único caso especial es que la línea superior de un bloque nunca debe sobrescribir ningún carácter que no sea espacio detrás de él.
La interpretación de las alturas de columna se puede explicar mejor mirando una representación 2D desde el lado.
HEIGHT: 1 2 3 -3 -2 -1
__ __
__ |__| |__| __
__ |__| |__| |__| __
|__| |__| |__| |__|
Casos de prueba
Si desea probar su solución con algunas entradas más, he reunido un par de casos de prueba aquí .
Victorioso
Este es el código de golf , por lo que gana el envío más corto (en bytes).