Los programadores a menudo están obsesionados con dibujar fractales. Creo que necesitamos un nuevo medio informático.
El árbol H es un tipo bastante simple de fractal hecho de líneas horizontales y verticales. Aquí está en su décima iteración ( cortesía de Wikipedia ):

Ahora, imagine que cada una de las líneas de la imagen es un directorio (carpeta) en un sistema de archivos de computadora estándar. Todas menos las líneas más pequeñas se cruzan con dos líneas más pequeñas que ellas; Estas dos líneas más pequeñas son subdirectorios de la línea más grande. Por lo tanto, la línea horizontal grande en el medio es el directorio padre de las dos líneas verticales más grandes, que son a su vez padres, abuelos, etc. del resto de las líneas de la imagen.
Desafío
Escriba un programa que tome un entero positivo N a través de stdin o la línea de comando (o la alternativa más cercana) y cree un árbol de directorios que refleje la enésima iteración del fractal del árbol H.
La primera iteración (N = 1) es una sola línea horizontal. En cada iteración posterior, se agrega un nuevo conjunto de líneas verticales u horizontales a los extremos de las líneas actuales. Entonces para N = 2 se agregan dos líneas verticales (formando una H), para N = 3 se agregan cuatro líneas horizontales, etc.
El nombre del directorio raíz siempre debe ser tree. Los nombres de los subdirectorios deben coincidir con la dirección que están en relación con su línea parental, utilizando right, left, upy down.
Desde el directorio raíz es siempre una línea horizontal que siempre tendrá righty leftsubdirectorios. Sin embargo, los dos tendrán upy downsubdirectorios, y los tendrá righty leftotra vez, y así sucesivamente.
Los directorios al final del límite de iteraciones deben estar vacíos.
Ejemplo
Para N = 3, el árbol de directorios debería verse así:
tree
    right
        up
        down
    left
        up
        down
Información adicional
- Idealmente, el treedirectorio aparecerá en la misma carpeta en la que se encuentra el código fuente, pero está bien si va a algún directorio de trabajo.
- Puede suponer que no hay un treedirectorio preexistente en el lugar donde se creará el suyo.
- Puede suponer que su programa siempre se ejecutará en el mismo sistema operativo moderno común (Mac / Windows / Linux). Básicamente, no se preocupe por usar un separador de archivos que no funcione en todos los sistemas operativos.
Puntuación
Este es el código de golf, por lo que gana el código más corto en bytes .
fuente

treesiempre tienen que serlefty enrightlugar deupydown?Respuestas:
Rubí, 127 bytes
Probado en Windows. Toma entrada a través de STDIN.
fgenera de forma recursiva una lista de las hojas requeridas del árbol, y luego las alimento a una sola llamada al sistemamkdir.fuente
Lua, 179
fuente
Python - 194
fuente
from os import*;s=system["left","up"][n%2]y puede dejar los corchetes(0,1)para darfor i in 0,1:Python 2 + * nix coreutils,
212189Genera todas las rutas y llamadas más internas.
mkdir -p
Se bloquea si la entrada <1
fuente
import os,itertools as t