[HOMEWORK] Homework 8 obbligatorio [ZIP UPDATED 7/12]

andrea.sterbini (167800 points)
488 897 1728
asked Dec 4, 2020 in Avvisi by andrea.sterbini (167,800 points)
edited Dec 7, 2020 by andrea.sterbini

ATTENZIONE:

  • eventuali correzioni verranno inserite qui
    • ho aggiunto un paio di test e tolto il check di ricorsione dal caso empty
    • ho aggiornato lo zip e tutti i files, riscaricate lo zip
    • sto ancora calibrando i timeout, per ora sono a 1 secondo per test (times VM warp factor)
    • i commenti nei file verranno modificati o tolti in fase di test segreti
  • NOTA: per eseguire i test SENZA i controlli ed il timeout modificate test_01.py settando la variabile DEBUG=True

Istruzioni

Per svolgere l'homework:

  • Installate le librerie necessarie (COMPRESO stopit)
  • Scaricate il file HW8req.zip  e scompattatelo in una directory
    • Lo zip contiene
      • l'esercizio da svolgere, descritto all'inizio del file program01.ita.py (in italiano) oppure program01.eng.py (in inglese)
        • l'esercizio consiste nel realizzare, se necessario definendo funzioni ausiliarie, la funzione descritta all'inizio del file, completandone il codice
      • un file di testo vuoto program01.txt in cui descrivere il vostro algoritmo
        • altre librerie e file necessari ad eseguire i test sulla vostra macchina
    • Posizionatevi nella directory creata unzippando l'archivio e rinominate il file program01.ita/eng.py che preferite con il nome program01.py
    • Editate il file program01.py implementando le funzioni necessarie a risolvere l'esercizio.
    • Editate il file program01.txt e descrivete l'algoritmo utilizzato nel vostro programma.
    • ATTENZIONE: nel file program01.txt NON inserite nè codice nè il vostro nome/id, deve restare anonimo.
    • ATTENZIONE: il programma NON DEVE eseguire nessun input() o print(), infatti riceve tutte le informazioni di cui ha bisogno tramite i parametri della funzione che dovete completare e torna il risultato con return.
    • ATTENZIONE: SONO VIETATE le variabili globali.
    • ATTENZIONE: SONO VIETATE tutte le altre librerie a parte quelle già importate 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 ottenuta scompattando lo zip
      • eseguite il comando (test senza timeout)
        • pytest test_01.py -v -rA
      • oppure (con una stampa dei tempi impiegati per eseguire ciascun test)
        • pytest test_01.py -v -rA --durations 0
      • oppure (CON stampa dei tempi spesi dal programma nelle 20 funzioni complessivamente più lente)
        • pytest test_01.py -v -rA --profile
      • Per far fermare i test al primo errore aggiungete l'opzione -x
      • Per chi usa Spyder:
        • è possibile eseguire i test direttamente da dentro Spyder installando il plugin spyder-unittest (ma senza timeout o parametri aggiuntivi)
        • è possibile ottenere i tempi spesi in ciascuna funzione direttamente da dentro Spyder installando il plugin spyder-line-profiler

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

    Scadenze

    • La prima scadenza obbligatoria per tutti è: ore 23:59 del 13 dicembre 2020
    • Il 14 dicembre vi verranno assegnati fino a 3 file program01.txt da valutare e consigliare entro le 23:59 del 15/12/20
    • Riceverete fino a 3 suggerimenti dai vostri colleghi e potrete a quel punto fare ulteriori consegne dopo aver valutato il consiglio ricevuto (fino alle 23:59 del 17/12/20)

    Prima Consegna obbligatoria entro le 23:59 del 13/12/20

    Dovrete consegnare entrambi i file program01.py e program01.txt entro la prima scadenza.

    Partecipando alla fase di peer-assessment (valutazione tra pari) avrete altri 4 giorni a disposizione.

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

    Potete consegnare più volte, vale l'ultima.

    3 Answers

    r
    riccardo.t (510 points)
    0 0 2
    answered Dec 4, 2020 by riccardo.t (510 points)
    Salve Prof, sbaglio io qualcosa o nel test empty.txt la ricorsione non è necessaria perché il file è vuoto? I test controllano comunque se è presente e quindi viene errore
    andrea.sterbini (167800 points)
    488 897 1728
    commented Dec 4, 2020 by andrea.sterbini (167,800 points)
    Hai ragione, a breve sistemo i test per evitare questo caso. Grazie per la segnalazione
    G
    Giordano_Dionisi (3100 points)
    12 38 58
    commented Dec 4, 2020 by Giordano_Dionisi (3,100 points)

    Perfetto grazie mille prof, concordo anche io con @Riccardo T. per la stessa ragione proprio !!

    andrea.sterbini (167800 points)
    488 897 1728
    commented Dec 7, 2020 by andrea.sterbini (167,800 points)
    ho disattivato il test di ricorsione sul caso empty
    Marco Freddi (1420 points)
    1 2 16
    answered Dec 5, 2020 by Marco Freddi (1,420 points)

    Le righe che iniziano con # sono per forza solo le prime righe scritte? O potrebbero esserci righe con # anche in mezzo ai dati da prelevare?
    Nei txt di test attuali ho visto solo che in alcuni c'era un \n all'inizio prima dei #, ma quello non è un problema.

    g
    giacomo_venturini (6680 points)
    2 5 39
    commented Dec 7, 2020 by giacomo_venturini (6,680 points)
    Il testo non lo specifica, quindi è meglio assumere che possano essere anche in mezzo o in fondo
    b
    biziox (200 points)
    0 0 2
    answered Dec 6, 2020 by biziox (200 points)
    Credo ci sia un typo : istructions -> instructions
    andrea.sterbini (167800 points)
    488 897 1728
    commented Dec 7, 2020 by andrea.sterbini (167,800 points)
    grazie, l'ho corretto