Napisz program lub funkcję, która przyjmuje niepustą listę liczb całkowitych w dowolnym rozsądnym dogodnym formacie, takim jak 4, 0, -1, -6, 2lub [4 0 -1 -6 2].
Wydrukuj lub zwróć ciąg przedstawiający listę jako las artystyczny ASCII, w którym każda liczba staje się drzewem o proporcjonalnej wysokości. Każde drzewo zajmuje cztery kolumny tekstu wyjściowego w następujący sposób:
Dodatnia liczba całkowita N staje się drzewem, którego podstawa jest
__|_i góra jest^, z N warstwami/ \pomiędzy nimi.Na przykład, gdy N = 1, drzewo jest
^ / \ __|_gdy N = 2, drzewo jest
^ / \ / \ __|_gdy N = 3, drzewo jest
^ / \ / \ / \ __|_i tak dalej.
Ujemna liczba całkowita N staje się podobna do odpowiedniego drzewa dodatniego, z tym wyjątkiem, że pionowy pasek znajduje się między kreskami gałęzi zamiast spacji.
Na przykład, gdy N = -1, drzewo jest
^ /|\ __|_gdy N = -2, drzewo jest
^ /|\ /|\ __|_gdy N = -3, drzewo jest
^ /|\ /|\ /|\ __|_i tak dalej.
Kiedy liczba całkowita wynosi 0, technicznie nie ma drzewa, tylko pusta przestrzeń czterech znaków podkreślenia:
____
Podkreślenia u podstawy każdego drzewa muszą być wyrównane na wyjściu, tzn. Wszystkie drzewa muszą mieć swoje podstawy na tym samym poziomie. Ponadto pojedynczy znak podkreślenia jest dodawany na końcu wiersza podkreśleń po ostatnim drzewie. Dzięki temu każde drzewo ma po każdej stronie pustą kolumnę „powietrza”.
Przykładem 4 0 -1 -6 2może być wynik dla
^
/|\
^ /|\
/ \ /|\
/ \ /|\ ^
/ \ ^ /|\ / \
/ \ /|\ /|\ / \
__|_______|___|___|__
Zwróć uwagę, że wzory drzew zawsze mają wiodącą kolumnę pustej przestrzeni, ale należało dodać podkreślenie, aby wstawić prawą stronę ostatniego drzewa.
Również:
- Końcowe spacje na dowolnych liniach są w porządku, ale nie powinno być niepotrzebnych spacji wiodących.
- Wiodące znaki nowej linii są niedozwolone (najwyższe drzewo powinno dotykać górnej krawędzi siatki tekstu wyjściowego) i dozwolony jest tylko jeden znak nowej linii.
- Lista może zawierać dowolne liczby całkowite od -250 do 250 włącznie. Obsługa wyższych drzew nie jest wymagana.
Najkrótszy kod w bajtach wygrywa.
Więcej przykładów
3:
^
/ \
/ \
/ \
__|__
-2:
^
/|\
/|\
__|__
0:
_____
0, 0:
_________
0, 1, 0:
^
/ \
______|______
0, -1, 2, -3, 4:
^
^ / \
^ /|\ / \
^ / \ /|\ / \
/|\ / \ /|\ / \
______|___|___|___|__
_(podkreślenia) po ostatnim drzewie.