I programmatori sono spesso ossessionati dal disegno di frattali. Penso che abbiamo bisogno di un nuovo supporto basato su computer.
L' albero H è un tipo abbastanza semplice di frattale fatto di linee orizzontali e verticali. Eccolo alla sua decima iterazione (per gentile concessione di Wikipedia ):
Ora, immagina che ciascuna delle linee nell'immagine sia una directory (cartella) in un file system standard per computer. Tutte tranne le linee più piccole intersecano due linee più piccole di loro; queste due linee più piccole sono sottodirectory della linea più grande. Quindi la grande linea orizzontale al centro è la directory principale delle due più grandi linee verticali, che sono a loro volta genitori, nonni, ecc. Del resto delle linee nell'immagine.
Sfida
Scrivi un programma che accetta un numero intero positivo N tramite stdin o la riga di comando (o l'alternativa più vicina) e crea un albero di directory che rispecchia l'ennesima iterazione del frattale dell'albero H.
La prima iterazione (N = 1) è una singola linea orizzontale. In ogni iterazione successiva viene aggiunto un nuovo set di linee verticali o orizzontali alle estremità delle linee correnti. Quindi per N = 2 vengono aggiunte due linee verticali (creando una forma ad H), per N = 3 vengono aggiunte quattro linee orizzontali, ecc.
Il nome della directory principale deve essere sempre tree
. I nomi delle sottodirectory devono corrispondere la direzione che sono in rispetto alla loro linea di genitore, utilizzando right
, left
, up
e down
.
Poiché la directory principale è sempre una linea orizzontale avrà sempre right
e left
sottodirectory. Ma quei due avranno up
e down
sottodirectory, e quelli avranno right
e left
ancora, e così via.
Le directory alla fine del limite di iterazioni dovrebbero essere vuote.
Esempio
Per N = 3 l'albero delle directory dovrebbe apparire così:
tree
right
up
down
left
up
down
Informazioni addizionali
- Idealmente la
tree
directory apparirà nella stessa cartella in cui si trova il codice sorgente, ma va bene se va in una directory funzionante. - Puoi presumere che non ci sia una
tree
directory preesistente nel luogo in cui verrà creata la tua. - Puoi presumere che il tuo programma sarà sempre eseguito sullo stesso sistema operativo moderno comune (Mac / Windows / Linux). Fondamentalmente non preoccuparti di usare un separatore di file che non funziona in tutti i sistemi operativi.
punteggio
Questo è code-golf, quindi vince il codice più breve in byte .
tree
devono sempre essereleft
eright
invece diup
edown
?