Sfida
Scrivi un programma che accetta un array 11x11 di numeri interi e costruisce un building block 3D ASCII, in cui ciascun valore dell'array rappresenta l'altezza di una colonna di blocchi alle coordinate corrispondenti alla posizione dell'array. Un'altezza negativa è una colonna "mobile": è visibile solo il blocco superiore.
Esempio
__________________
___ /\__\__\__\__\__\__\
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, \/\__\ \/__/__/__/__/ \/\__\
\/\__\_________ ______\/\__\
\/\__\__\__\__\ /\__\__\__\__\
\/__/__/__/__/ \/__/__/__/__/
Ingresso
L'input sarà un elenco di 121 numeri interi, letti dallo stdin (la scelta del separatore dipende da te) o passati come un array (può essere 1D o 2D).
Le altezze saranno comprese tra -11 e 11.
Produzione
L'edificio generato può essere scritto su stdout, visualizzato direttamente sullo schermo o restituito come stringa separata da una nuova riga.
Sono ammessi spazi iniziali e finali.
Regole di costruzione
La forma di un singolo blocco 3D è simile al seguente:
___
/\__\
\/__/
E un cubo di blocchi 2x2x2 si presenta così:
______
/\__\__\
/\/\__\__\
\/\/__/__/
\/__/__/
Quando i blocchi si sovrappongono, un blocco più alto ha la precedenza su uno inferiore, i blocchi davanti hanno la precedenza su quelli più indietro e i blocchi a sinistra hanno la precedenza su quelli a destra. L'unico caso speciale è che la riga superiore di un blocco non deve mai sovrascrivere alcun carattere non spaziale dietro di esso.
L'interpretazione delle altezze di colonna può essere meglio spiegata guardando una rappresentazione 2D dal lato.
HEIGHT: 1 2 3 -3 -2 -1
__ __
__ |__| |__| __
__ |__| |__| |__| __
|__| |__| |__| |__|
Casi test
Se vuoi provare la tua soluzione su qualche altro input, ho messo insieme un paio di casi di test qui .
vincente
Questo è code-golf , quindi vince l'invio più breve (in byte).