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

Do you need help?

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

andrea.sterbini (207940 points)
756 1270 2377
in Avvisi by (208k points)
edited by

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
    by (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 (207940 points)
    756 1270 2377
    by (208k points)
    Hai ragione, a breve sistemo i test per evitare questo caso. Grazie per la segnalazione
    G
    Giordano_Dionisi (3100 points)
    17 41 59
    by (3.1k points)

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

    andrea.sterbini (207940 points)
    756 1270 2377
    by (208k points)
    ho disattivato il test di ricorsione sul caso empty
    Marco Freddi (1420 points)
    1 2 16
    by (1.4k 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)
    3 6 40
    by (6.7k 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
    by (200 points)
    Credo ci sia un typo : istructions -> instructions
    andrea.sterbini (207940 points)
    756 1270 2377
    by (208k points)
    grazie, l'ho corretto