ATTENZIONE:
- eventuali correzioni verranno inserite qui, tenete d'occhio questa pagina
- pare che nella versione program.ita.py ci sia un carattere che da problemi con l'encoding utf8 in windows o OsX.
- Cancellate le righe della "consegna" iniziale e risalvate il file per farlo funzionare senza errore.
- Oppure aggiungete come prima riga il commento # -*- coding: utf-8 -*-
- per via di una piccola correzione a testlib.py ho aggiornato lo ZIP
- pare che nella versione program.ita.py ci sia un carattere che da problemi con l'encoding utf8 in windows o OsX.
- NOTA: per eseguire i test SENZA i controlli e il timeout modificate test_01.py settando la variabile DEBUG=True
- NOTA: per eseguire i test CON i controlli ma con un timeout molto grande (per vedere quanto tempo ci mettete), cambiate il WARP factor in test_01.py
Istruzioni
Per svolgere l'homework:
- Installate le librerie necessarie (COMPRESO stopit)
- Scaricate il file HW6-req.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
- altre librerie e file necessari a eseguire i test sulla vostra macchina
- l'esercizio da svolgere, descritto all'inizio del file program01.ita.py (in italiano) oppure program01.eng.py (in inglese)
- Lo zip contiene
- Posizionatevi nella directory creata unzippando l'archivio e rinominate il file program01.ita.py con il nome program01.py
- Editate i file:
- program01.py implementando le funzioni necessarie a risolvere l'esercizio e senza cambiare il nome della funzione principale
- algorithm.txt in cui descrivete l'algoritmo utilizzato (senza inserire codice o info che vi possano identificare)
- ATTENZIONE: il programma NON DEVE eseguire nessun input(), 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.
- Dopo la scadenza verranno applicati dei test segreti per cui il vostro programma potrebbe fallire se risolve solo dei casi particolari.
- 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
- if __name__ == '__main__':
- Per eseguire i test
- aprite una finestra "Anaconda Prompt" e posizionatevi nella directory ottenuta scompattando lo zip
- eseguite il comando
- 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 4: (Spyder 5 non è ancora supportato dai plugin)
- è 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
- Prima scadenza per TUTTI: ore 23:59 del 4/12/21 (consegnate entrambi i file)
- Il giorno seguente vi verranno assegnati 3 algoritmi anonimi da valutare entro le 23:59 del 6/12/21
- Una volta ricevuti i suggerimenti dai compagni, dopo averli valutati tutti, potrete riconsegnare un programma migliore entro le 23:59 del 8/12/21
Dovrete consegnare entrambi i file:
- program01.py
- algorithm.txt (file di testo utf8, usate Spyder o Notepad++)
La pagina di consegna è https://q2a.di.uniroma1.it/homeworks/delivery?homework=7
Potete consegnare più volte, vale l'ultima.