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

Do you need help?

esame 29-1-20 esercizio 5

C
C.Calamia (720 points)
7 17 25
in Info su corso ed esami by (720 points)
recategorized by
Salve a tutti, ho un problema con l'esercizio 5 ma nello zip dell'esame non ci sono le soluzioni quindi chiedo un parere qui.

Questo è lo zip:

https://q2a.di.uniroma1.it/assets/fondamenti-19-20/esame-29-1-20.zip?v=0

Tralasciando lo scopo dell'esercizio vorrei capire come risolvere questo sottoproblema: devo eliminare le foglie di un albero e restituire la somma delle foglie eliminate. Quello che faccio è :

se il nodo r non ha figli aggiungo l'id di r a un variabile,

faccio un ciclo for in cui scorro i figli di r,

se il figlio corrente non ha figli aggiungo il suo id alla variabile e lo rimuovo dalla lista dei figli di r,

faccio la chiamata ricorsiva sul figlio corrente,

fuori dal for ritorno la variabile.

Facendo così riesco a cancellare molte foglie, ma non tutte. Avete qualche suggerimento da darmi? Grazie.
506 views
closed

1 Answer

Best answer
m
massimocoppola (950 points)
2 18 21
by (950 points)
selected by
ciao,

io mi sono trovato nella condizione: "lo [la foglia] rimuovo dalla lista dei figli di r"

anche io facevo questa cosa ma credo tu stia iterando direttamente sulla lista di figli di r: quindi modifichi una lista mentre ci iteri sopra (cosa che facevo anche io). il problema è che così facendo la lista si rimpicciolisce e non ti fa la seconda iterazione (avendo a mente l'esempio fornito nell'esercizio).

se questo è il tuo problema, io l'ho risolto creando una copia del valore di r ed una copia dei figli di r. modifico questi durante il ciclo. finito il ciclo r.id= r_id_copia e r.f = r_f_copia.
C
C.Calamia (720 points)
7 17 25
by (720 points)
Ti ringrazio, adesso funziona!
m
massimocoppola (950 points)
2 18 21
by (950 points)
scusami se ti disturbo ma tu riesci a lanciare i test dell'esame da dentro spyder?
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
ho aggiunto questo tipo degli errori alla guida https://q2a.di.uniroma1.it/20126/guida-errori-difficili-da-individuare