[HOMEWORK 4] Ricorsione: foreste, alberi di gioco e visualizzazione di un albero di directory [con test segreti]

andrea.sterbini (167380 points)
487 897 1724
asked Dec 19, 2018 in Avvisi by andrea.sterbini (167,380 points)
edited Jan 12, 2019 by andrea.sterbini

ATTENZIONE

  • Ho aggiunto i test segreti
  • IN GENERE
    • la ricorsione non viene rilevata se la funzione/metodo/classe è definita DENTRO una funzione.
      Spostate le classi/funzioni ricorsive al livello più esterno
  • NELL'ESERCIZIO 1
    • uno dei casi di test è una foresta di singoli archi, se la ricorsione non viene rilevata fate in modo di fare un passo ricorsivo anche in questo caso (p.es. contando i nodi invece che gli archi)
  • NELL'ESERCIZIO 2
    • l'ordinamento delle sequenze va PRIMA fatto sulle sequenze di numeri, e POI vanno trasformate in stringhe
  • NELL'ESERCIZIO 3
    • LA DISTANZA TRA I SOTTOALBERI DEV'ESSERE 2 (DUE) PIXEL INVECE CHE 1
    • Inoltre la linea verticale è al 6° pixel (filename - 5 pixel - linea - 4 pixel - filename)
    • il secondo test ha solo 3 livelli, se ve ne vengono 5 avete lo zip vecchio
    • se il nome del file è più lungo di 30 caratteri troncatelo
  • RICORDO CHE LE LIBRERIE AGGIUNTIVE SONO VIETATE
  • Windows ha un limite di 256 caratteri per i path, quindi unzippate in una directory con percorso corto (ad esempio d:\homework04 )
  • 7-zip funziona bene, ci mette un po' ma riesce a scompattare tutta la gerarchia di directory
  • Ho eliminato alcune directory e rigenerato le immagini, scaricate lo zip aggiornato

Istruzioni

Per svolgere l'homework:

  • Installate le librerie necessarie
  • Scaricate il file homework04.zip (CON DIR AGGIORNATE) e scompattatelo in una directory
    • Lo zip contiene
      • i tre esercizi, che sono descritti all'inizio dei file program01.py program02.py program03.py
        • ciascun esercizio consiste nel realizzare, se necessario definendo funzioni ausiliarie, la funzione descritta all'inizio del file, completandone il codice
      • altre librerie necessarie ad eseguire i test sulla vostra macchina
  • Posizionatevi nella directory homework04 creata unzippando l'archivio ed editate i file program01.py program02.py program03.py
  • Scrivete una descrizione in italiano (o inglese) dell'algoritmo che state implementando in un file di testo algoritmo0X.txt per ciascun esercizio
    • E' assolutamente VIETATO metterci codice python o descrizioni a livello di singola istruzione, dovete descrivere il RAGIONAMENTO
    • La descrizione deve essere ANONIMA (non indicate chi siete, plis)
  • ATTENZIONE: i programmi NON DEVONO eseguire nessun input() o print(), infatti ricevono tutte le informazioni di cui hanno bisogno tramite i parametri della funzione che dovete completare e tornano il risultato con return.
  • ATTENZIONE: SONO VIETATE le variabili globali.
  • ATTENZIONE: SONO VIETATE tutte le librerie a parte quelle già presenti nel testo.
  • ATTENZIONE: i vostri programmi NON DEVONO sfruttare eventuali periodicità o caratteristiche strutturali degli input, ma devono essere applicabili a qualsiasi input valido.
  • ATTENZIONE: NON LASCIATE ISTRUZIONI DI TEST NEL PROGRAMMA, A MENO CHE NON SIANO DOPO UNA RIGA
    • if __name__ == '__main__':
      • vostre istruzioni di test che in questo modo non vengono eseguite durante l'import del file
  • Per eseguire i test
    • aprite una finestra "Anaconda Prompt" e posizionatevi nella directory homework03 ottenuta scompattando lo zip
    • eseguite il comando (test senza timeout)
      • pytest test_01.py -v
    • oppure (test del primo esercizio con timeout di 1 secondo per ciascun test e con una stampa dei tempi impiegati per eseguire ciascun test)
      • pytest test_01.py -v --timeout 1 --durations 0
    • Per far fermare i test al primo errore usate l'opzione -x
    • Per chi usa Spyder è possibile eseguire i test direttamente da dentro Spyder installando il plugin spyder-unittest (ma senza timeout)

NOTA: per aprire i file di testo in formato utf8 NON usate Notepad che non riconosce gli accapi Unix ('\n') ma usate Spyder, Notepad++ oppure WordPad

Consegna

Per la consegna dovrete consegnare per ciascun esercizio (for X in [1, 2, 3]: ) solo il file program0X.py e il file algoritmo0X.txt (sono necessari entrambi)

La pagina di consegna è https://q2a.di.uniroma1.it/homeworks/delivery?homework=4

Scadenze (ALLUNGATE)

  • prima consegna (algoritmo0X.txt e program0X.py) entro le ore 23:59 del 31 dicembre 2018
    • potete consegnare più volte, vale l'ultima consegna
    • se cambiate in qualche modo l'algoritmo aggiornate anche il file algoritmo0X.txt
  • SOLO per chi ha consegnato:
    • peer-assessment: 2 giorni dalle 8AM del 1 gennaio 2019 alle 23:59 del 2 gennaio 2018
      • 3 algoritmi da valutare per ciascun esercizio, dando consigli su come migliorarli
  • SOLO per chi ha partecipato al peer-assessment, una volta ricevuti i consigli dai compagni:
    • seconda consegna migliorata e feedback sui consigli ricevuti: entro le ore 23:59 del 10 gennaio 2019
  • NOTA: CHI INTENDE PARTECIPARE ALL'APPELLO DEL 8/1/19 DEVE CONSEGNARE ENTRO IL 5/1/19
2,120 views

Please log in or register to answer this question.