Les programmeurs sont souvent obsédés par le dessin de fractales. Je pense que nous avons besoin d'un nouveau support informatique.
L' arbre H est un type de fractale assez simple composé de lignes horizontales et verticales. Le voici à sa dixième itération ( avec la permission de Wikipedia ):
Maintenant, imaginez que chacune des lignes de l'image est un répertoire (dossier) dans un système de fichiers informatique standard. Toutes les lignes sauf les plus petites coupent deux lignes plus petites qu’elles; ces deux lignes plus petites sont des sous - répertoires de la ligne plus grande. Ainsi, la grande ligne horizontale au milieu est le répertoire parent des deux plus grandes lignes verticales, qui sont à leur tour les parents, les grands-parents, etc. du reste des lignes de l'image.
Défi
Écrivez un programme qui prend un entier positif N via stdin ou la ligne de commande (ou l'alternative la plus proche) et crée une arborescence de répertoires qui reflète la Nème itération de la fractale de l'arbre H.
La première itération (N = 1) est une seule ligne horizontale. À chaque itération suivante, un nouvel ensemble de lignes verticales ou horizontales est ajouté aux extrémités des lignes actuelles. Donc pour N = 2 deux lignes verticales sont ajoutées (en faisant une forme en H), pour N = 3 quatre lignes horizontales sont ajoutées à cela, etc.
Le nom du répertoire racine doit toujours être tree
. Les noms des sous - répertoires doivent correspondre à la direction qu'ils sont en ce qui concerne leur lignée parentale, en utilisant right
, left
, up
et down
.
Comme le répertoire racine est toujours une ligne horizontale, il aura toujours des sous right
- left
répertoires. Mais ces deux auront up
et down
sous - répertoires, et ceux-ci auront right
et left
encore, et ainsi de suite.
Les répertoires à la fin de la limite d'itérations doivent être vides.
Exemple
Pour N = 3, l'arborescence de répertoires devrait ressembler à ceci:
tree
right
up
down
left
up
down
Information additionnelle
- Idéalement, le
tree
répertoire apparaîtra dans le même dossier que le code source, mais ce n'est pas grave s'il va dans un répertoire de travail. - Vous pouvez supposer qu'il n'y a pas de
tree
répertoire préexistant à l'endroit où le vôtre sera créé. - Vous pouvez supposer que votre programme sera toujours exécuté sur le même système d'exploitation moderne commun (Mac / Windows / Linux). Fondamentalement, ne vous inquiétez pas d'utiliser un séparateur de fichiers qui ne fonctionne pas dans tous les systèmes d'exploitation.
Notation
Il s'agit de code-golf, donc le code le plus court en octets l' emporte.
la source
tree
doivent-ils toujours êtreleft
etright
au lieu deup
etdown
?Réponses:
Rubis, 127 octets
Testé sous Windows. Prend entrée via STDIN.
f
génère récursivement une liste des feuilles requises de l'arborescence, puis je les alimente simplement à un seul appel système demkdir
.la source
Lua, 179
la source
Python - 194
la source
from os import*;s=system
["left","up"][n%2]
et vous pouvez laisser tomber les crochets(0,1)
pour donnerfor i in 0,1:
Python 2 + * nix coreutils,
212189Génère tous les chemins et appels les plus intérieurs
mkdir -p
Se bloque si entrée <1
la source
import os,itertools as t