Scrivi un programma o una funzione che includa un elenco non vuoto di numeri interi in qualsiasi formato conveniente ragionevole come 4, 0, -1, -6, 2o [4 0 -1 -6 2].
Stampa o restituisci una stringa che raffigura l'elenco come una foresta di arte ASCII in cui ogni numero diventa un albero di altezza proporzionale. Ogni albero occupa quattro colonne di testo nell'output come segue:
Un numero intero positivo N diventa un albero la cui base è
__|_e la parte superiore è^, con N strati di/ \in mezzo.Ad esempio, quando N = 1 l'albero è
^ / \ __|_quando N = 2 l'albero è
^ / \ / \ __|_quando N = 3 l'albero è
^ / \ / \ / \ __|_e così via.
Un numero intero negativo N diventa esattamente come l'albero positivo corrispondente, tranne per il fatto che una barra verticale si trova tra le barre del ramo anziché uno spazio.
Ad esempio, quando N = -1 l'albero è
^ /|\ __|_quando N = -2 l'albero è
^ /|\ /|\ __|_quando N = -3 l'albero è
^ /|\ /|\ /|\ __|_e così via.
Quando il numero intero è 0 non c'è tecnicamente albero, solo uno spazio vuoto di quattro trattini bassi:
____
I caratteri di sottolineatura alla base di ciascun albero devono allinearsi nell'output, ovvero tutti gli alberi devono avere le loro basi allo stesso livello. Inoltre, un singolo carattere di sottolineatura viene aggiunto alla fine della linea di trattini bassi dopo l'ultimo albero. Questo lo rende così ogni albero ha una colonna vuota di "aria" su entrambi i lati di esso.
Ad esempio, l'output per 4 0 -1 -6 2sarebbe
^
/|\
^ /|\
/ \ /|\
/ \ /|\ ^
/ \ ^ /|\ / \
/ \ /|\ /|\ / \
__|_______|___|___|__
Nota come i motivi ad albero abbiano sempre una colonna principale di spazio vuoto, ma è necessario aggiungere un carattere di sottolineatura per riempire il lato destro dell'ultimo albero.
Anche:
- Gli spazi finali su qualsiasi linea vanno bene, ma non dovrebbero esserci spazi iniziali non necessari.
- Non sono consentite nuove righe principali (l'albero più alto deve toccare la parte superiore della griglia del testo di output) e è consentita solo una nuova riga finale.
- L'elenco può contenere numeri interi compresi tra -250 e 250 inclusi. Non è necessario maneggiare alberi più alti.
Vince il codice più breve in byte.
Altri esempi
3:
^
/ \
/ \
/ \
__|__
-2:
^
/|\
/|\
__|__
0:
_____
0, 0:
_________
0, 1, 0:
^
/ \
______|______
0, -1, 2, -3, 4:
^
^ / \
^ /|\ / \
^ / \ /|\ / \
/|\ / \ /|\ / \
______|___|___|___|__
_(carattere di sottolineatura) dopo l'ultimo albero.