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

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Ordinamento foglie degli alberi ES1 homework4

r
rapiroma (440 points)
4 8 14
in Es1 by (440 points)

Buongiorno a tutti,

la lista delle foglie degli alberi (detta cosi sembra quasi una poesia di Ungaretti ) deve avere un particolare ordinamento?

Il test mi fallisce con la seguente motivazione:

AssertionError: {'7': [3, ['11', '9', '12']], '5': [2, ['6']], '1': [3, ['3', '4']]} != {'1': [3, ['3', '4']], '7': [3, ['11', '12', '9']], '5': [2, ['6']]}   

- {'1': [3, ['3', '4']], '5': [2, ['6']], '7': [3, ['11', '9', '12']]}

?                                                         -----

+ {'1': [3, ['3', '4']], '5': [2, ['6']], '7': [3, ['11', '12', '9']]}

?                                                             +++++

: I due file JSON contengono strutture diverse

Scritto in maniera un po' piu' leggibile, la lista delle foglie dell'albero 7 che si aspetta il test ha come ordine 11, 12 e 9 mentre io restituisco 11, 9, 12

Valerio

2 Answers

PieMH (2300 points)
3 12 31
by (2.3k points)
Si devi ordinare quelle liste nei valori del dizionario, in ordine alfabetico se stringhe numerico se interi.

Infatti '12' < '9' perché le stringhe vengono confrontate carattere per carattere e 1 viene prima di 9 fine del confronto, se fossero stati numeri era il contrario perché li l'ordinamento segue un altra logica, ovvero numero più corto è più piccolo oltre a considerare confronti cifra per cifra
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Basta che fai un sort sulla lista di foglie e vengono ordinate automaticamente
r
rapiroma (440 points)
4 8 14
by (440 points)

In verità è la prima cosa che ho pensato, tant'è che ho un sorted() proprio sulla lista delle foglie.

Ho tolto il sorted, lanciato i test  e giustamente ho ottenuto tutti errori. Ho rimesso il sorted() ed ora va che è una bomba! mail

Sinceramente però non ho ben capito cosa possa essere successo.

Comunque ora passo tutti i test.

_andrea_ (45670 points)
11 42 297
by (45.7k points)
In che senso non hai capito come possa essere successo? Se togli il sort le foglie vengono messe nell'ordine in cui le trovi
r
rapiroma (440 points)
4 8 14
by (440 points)
Esatto, ho tolto il sort perché a seguito del tuo commento avevo pensato di non trovarcelo, ho lanciato il programma (senza il sort) e giustamente i test sono falliti.

Poi l'ho semplicemente rimesso, esattamente nello stesso punto, rilanciando il programma. I test sono tutti corretti.

Era come se le foglie, anche se il sort era presente, non venissero correttamente ordinate. Non so cosa sia successo, forse ho cambiato la sera prima qualche parte al codice ed invece io sono convinto che ho solo eliminato il sort e rimesso, anche se non credo, ma ad una certa età tutto è possibile...