Un árbol H es una estructura de árbol fractal que comienza con una línea. En cada iteración, se agregan ramas T a todos los puntos finales. En este desafío, debe crear una representación ASCII de cada segundo nivel de árbol H.
El primer nivel simplemente contiene tres caracteres menos guiones:
---
Los siguientes niveles se construyen recursivamente:
- Cree una matriz de copias 2x2 del nivel anterior, separadas por tres espacios o líneas.
- Conecte los centros de las copias con líneas de arte ASCII en forma de H. Utilice
-
para líneas horizontales,|
líneas verticales y+
siempre que las líneas se encuentren entre sí.
Segundo nivel
-+- -+-
| |
+-----+
| |
-+- -+-
Tercer nivel
-+- -+- -+- -+-
| | | |
+--+--+ +--+--+
| | | | | |
-+- | -+- -+- | -+-
| |
+-----------+
| |
-+- | -+- -+- | -+-
| | | | | |
+--+--+ +--+--+
| | | |
-+- -+- -+- -+-
Reglas
- La entrada es un número entero que representa el nivel del árbol H del arte ASCII como se describió anteriormente ( no el nivel real del árbol H), ya sea cero o uno indexado.
- La salida es flexible. Por ejemplo, puede imprimir el resultado o devolver una cadena separada por una nueva línea, una lista de cadenas para cada línea o una matriz 2D de caracteres.
- Debe utilizar
-
,|
,+
y los caracteres de espacio. - Se permiten espacios finales y hasta tres líneas de espacios en blanco finales.
Este es el código de golf. La respuesta más corta en bytes gana.
Respuestas:
Lienzo ,
2019 bytesPruébalo aquí!
Explicación:
fuente
Carbón de leña , 22 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. 0 indexado. Explicación:
Imprima los tres
-
s iniciales , dejando el cursor en el medio.Repita el número de veces dado.
Repita dos veces para cada uno
H
. Cada ciclo crea un poco más grandeH
del ciclo anterior, pero solo queremosH
s alternativos .Rotar la figura.
Dibuja la mitad de la siguiente línea.
Reflexiona para completar el paso.
El resultado en cada iteración es el siguiente:
fuente
H
ve un quinto nivel , una rápida mirada alejadaPython 2 , 227 bytes
Pruébalo en línea!
fuente
Perl 6 , 118 bytes
Pruébalo en línea!
0 indexado. Devuelve una matriz 2D de caracteres. La idea básica es que la expresión
genera el patrón
Explicación
fuente