Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Suggerimenti es 3 hw 4

v
val9 (9770 points)
6 30 53
in Es3 by (9.8k points)
Buongiorno,
Cercavo qualche consiglio sulla risoluzione del terzo esercizio.
Grazie
981 views
closed

2 Answers

Best answer
_andrea_ (45670 points)
11 42 297
by (45.7k points)
selected by
Per generare l'albero parti dal presupposto che la radice ce l'hai, ed è il nome della cartella che ti viene passata. Poi vai avanti così, per ogni file/cartella che hai nella directory corrente:
Se è un file, aggiungi il file ai nodi della directory e ti fermi
Se è una cartella, la aggiungi ai figli e richiami la ricorsione su quella cartella
Queste cose le fai con la libreria os per esempio os.listdir per avere la lista di file/cartelle oppure os.path.isfile per sapere se ciò su cui hai chiamato la ricorsione è un file o no (se non lo è allora è una cartella)
v
val9 (9770 points)
6 30 53
by (9.8k points)
Invece, per quanto riguarda gli step 3 e 4, in che modo disegni le foglie? Come determini la posizione esatta in cui tracciarle?
_andrea_ (45670 points)
11 42 297
by (45.7k points)
La colonna dipende dalla profondità a cui si trovano nell'albero e la riga dipende sempre dalle foglie
v
val9 (9770 points)
6 30 53
by (9.8k points)
In che senso dipende dalle foglie?

Nel caso in cui ci sia solo una cartella insieme a diversi file che la precedono in ordine alfabetico, come fai a dare la precedenza alla cartella  (es. "Processori" in "Informatica/Hardware/Architetture")?
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Devi andare in ordine alfabetico. Credo che se un file venga prima di una cartella devi fare prima quello
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Ok ho notato ora che effettivamente le cartelle vengono prima. In questo caso non lo so, io ho solo fatto un sorted sulla listid e viene così da solo
f
federicoAg (1910 points)
1 7 16
by (1.9k points)
Prima di tutto devi crearti una funzione ricorsiva che ti generi la directory sottoforma di classe albero (occhio, ci possono essere file/cartelle con lo stesso nome ma in path completamente diversi)

dopodiché puoi copiarti tranquillamente i metodi che hai usato per l'esercizio 2 e 1, se li hai risolti con una classe albero, per le operazioni successive: calcolare l'altezza e la larghezza (vedi che c'è uno schema tra foglie/altezza e profondità dell'albero/larghezza)

per finire si deve tradurre il tutto in una matrice e fare l'immagine, vedi la logica delle immagini di esempio, c'è sempre uno schema
v
val9 (9770 points)
6 30 53
by (9.8k points)
Il mio problema è proprio tradurre tutto in un'immagine..