Drzewo H to fraktalna struktura drzewa rozpoczynająca się od linii. W każdej iteracji gałęzie T są dodawane do wszystkich punktów końcowych. W tym wyzwaniu musisz utworzyć reprezentację ASCII co drugi poziom drzewa H.
Pierwszy poziom zawiera po prostu trzy znaki myślnika-Minus:
---
Kolejne poziomy są konstruowane rekurencyjnie:
- Utwórz macierz kopii 2x2 z poprzedniego poziomu, oddzieloną trzema spacjami lub liniami.
- Połącz środki kopii z liniami artystycznymi ASCII w formie litery H. Użyj
-
do linii poziomych, linii|
pionowych i+
zawsze , gdy linie się spotykają.
Drugi poziom
-+- -+-
| |
+-----+
| |
-+- -+-
Trzeci poziom
-+- -+- -+- -+-
| | | |
+--+--+ +--+--+
| | | | | |
-+- | -+- -+- | -+-
| |
+-----------+
| |
-+- | -+- -+- | -+-
| | | | | |
+--+--+ +--+--+
| | | |
-+- -+- -+- -+-
Zasady
- Dane wejściowe są liczbami całkowitymi reprezentującymi poziom drzewa H sztuki ASCII, jak opisano powyżej ( nie rzeczywisty poziom drzewa H), zerowy lub indeksowany jednokrotnie.
- Wyjście jest elastyczne. Na przykład możesz wydrukować wynik lub zwrócić ciąg oddzielony znakiem nowej linii, listę ciągów dla każdej linii lub tablicę znaków 2D.
- Należy użyć
-
,|
,+
i spacje. - Dopuszczalne są końcowe znaki i maksymalnie trzy końcowe białe znaki.
To jest kod golfowy. Najkrótsza odpowiedź w bajtach wygrywa.
Odpowiedzi:
Płótno ,
2019 bajtówWypróbuj tutaj!
Wyjaśnienie:
źródło
Węgiel , 22 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. 0-indeksowane. Wyjaśnienie:
Wydrukuj pierwsze trzy
-
s, pozostawiając kursor na środku.Powtórz tę liczbę razy.
Powtórz dwa razy dla każdego
H
. Każda pętla tworzy nieco większą wartośćH
z poprzedniej pętli, ale chcemy tylko alternatywnychH
s.Obróć postać.
Narysuj połowę następnej linii.
Zastanów się, aby ukończyć krok.
Wynik każdej iteracji jest następujący:
źródło
H
, szybko pomniejszone spojrzenie: i.imgur.com/EGapcrS.pngPython 2 , 227 bajtów
Wypróbuj online!
źródło
Perl 6 , 118 bajtów
Wypróbuj online!
0-indeksowane. Zwraca tablicę znaków 2D. Podstawową ideą jest to, że wyrażenie
generuje wzór
Wyjaśnienie
źródło