FOGLIE ES3 HW 4

D
Daniele (640 points)
2 14 18
asked Dec 30, 2018 in Es3 by Daniele (640 points)
Ho creato la lista dei colori per ogni file e directory e l'immagine totalmente nera. Ho pensato di disegnare l'albero partendo dall'ultima foglia arrivando poi fino alla radice. Il problema è che non riesco a capire come trovare le coordinate per iniziare a disegnare l'ultima foglia (vale a dire la più profonda dell'albero).
154 views

1 Answer

a.capobianco1 (16770 points)
1 54 165
answered Dec 30, 2018 by a.capobianco1 (16,770 points)
1) Nell'esercizio la profondità corrisponde all'altezza dell'albero ovvero alla larghezza dell'immagine;

2) Se un albero ha 7 livelli di profondità avrò il livello 0(informatica), 1(hardware), 2(architetture), 3(processori), 4(cisc), 5(x86), 6(file foglia .txt);

3) La larghezza dell'immagine si trova facendo (livello massimo*20)+10 ovvero (6*20)+10=130;

4) Se ogni riga della matrice ha larghezza 130 significa che gli indici partiranno da 0 a 129;

5) Facendo un rapido calcolo distributivo sulla lunghezza è facile calcolare che l'inizio di ogni elemento [lista di 10 tuple colore] dista dall'altro di 20 unità quindi: 0, 20, 40, 60, 80, 100, 120.... il range completo di ogni elemento sarà 0-10, 20-30, 40-50, 60-70, 80-90, 100-110, 120-130 … nel caso in questione le linee di giunzione andranno a coprire gli spazi fuori range ovvero 10-20, 30-40 ecc.… le linee vericali partiranno, nel caso in questione, al centro di tali range ovvero 15, 35 ecc. ovviamente solo nel caso in cui l'elemento che lo precede sia padre…

Per rispondere alla tua domanda l'inizio della foglia posta al livello di profondità 6 sarà disegnata esattamente nella riga 0 e nella colonna120 matrice[0][120] ogni elemento successivo sarà posto a distanza 3 da quello che lo precede quindi 0, 3, 6, 9 ecc. …

Lo schema dell'immagine è uguale per tutti i test.. tutti gli elementi inizieranno sempre da 0, 20, 40 ecc... tutte le linee verticali inizieranno sempre da 15,35, 55 ecc. ovviamente solo quando vi sono i presupposti
R
RigelsHysaj (1550 points)
2 33 50
commented Dec 30, 2018 by RigelsHysaj (1,550 points)
ma si deve per forza partire dalle foglie? Si puo fare anche partendo dalla radice?
a.capobianco1 (16770 points)
1 54 165
commented Dec 30, 2018 by a.capobianco1 (16,770 points)
Beh io lancio la funzione ricorsiva sulla radice e ricorsivamente ricavo le coordinate di tutto. Ma la particolarità della ricorsione e che i risultati cominciano ad essere restituiti solo quando è stata raggiunta e abbandonata la profondità massima che è quella delle foglie che saranno restituite per prime
D
Daniele (640 points)
2 14 18
commented Dec 31, 2018 by Daniele (640 points)

Grazie per la chiarificazione. Però il fatto che "l'inizio della foglia posta al livello di profondità 6 sarà disegnata esattamente nella riga 0 e nella colonna120 matrice[0][120]" vale solamente per il caso particolare del primo test sulla cartella informatica. Per il caso generale, non esiste una qualche "formula" che permette di calcolare per gli altri  test dove iniziare a disegnare l'ultima foglia?

a.capobianco1 (16770 points)
1 54 165
commented Dec 31, 2018 by a.capobianco1 (16,770 points)
È fondamentale determinare l'ordine di apparizione delle foglie e delle cartelle vuote che sono equivalenti.
Ognuna sarà posta in matrice nella riga 3*indice di apparizione - 1 e 20*colonna-1.
Le foglie occuperanno sempre le righe 0, 3,6,9 ecc. In qualsiasi immagine... E appariranno in sequenza così come le hai determinate.
Quello che cambia è la colonna che è la profondità. Se trovi il modo di determinare tutti i nomo delle foglie e la loro profondità sao dove disegnarle. Un ragionamento simile puoi farlo anche con i nodi che non sono foglie. Tieni presente che ogni cartella non vuota e il primo elemento in essa contenuto sono sulla stessa riga mentre tutti gli altri  eventualmente presenti saranno sulla stessa colonna del 1elememto incolonnati ad esso.