ATTENZIONE
- Ho aggiunto sulla VM un test che fallisce se è presente caching. Solo una manciata di programmi ne sono affetti.
- Le scadenze sono state allungate di 10 gg
- Lo zip è stato aggiornato con alcuni nuovi test (11/12/23 ore 17)
- Esempio di nuovo test ... con log delle regole applicate (dalla mia implementazione)
-
Esempio di esecuzione del test multichar
if __name__ == '__main__':
encrypted_text= "aaabaaac"
pharaohs_cypher= {"aa":"bc","bb":"c","cc":"d"}
expected= { "d" }
res = pharaohs_revenge(encrypted_text, pharaohs_cypher)
assert res == expected
-
- Può essere utile studiare gli alberi di gioco.
- ATTENZIONE: NON INSERITE EMOJI NEL TESTO O NEL PROGRAMMA
- eventuali correzioni verranno inserite qui, tenete d'occhio questa pagina
- NOTA: il programma test_01.py DISATTIVA la funzione print ed aggiunge alcuni controlli. Per disattivarli e usare print assegnate la variabile DEBUG=True in test_01.py
Istruzioni
Per svolgere l'homework:
- Installate le librerie necessarie inclusa typeguard
- Scaricate il file HW8req.zip e scompattatelo in una directory. Il compito consiste nel:
- descrivere in un file di testo algorithm.txt l'algoritmo che avete realizzato (o state realizzando, senza inserire info personali, dev'essere anonimo)
- Lo zip contiene:
- il file program01.ita.py, il programma da realizzare, in cui trovate all'inizio la descrizione del problema da risolvere, se necessario definendo funzioni ausiliarie,
- altre librerie e file necessari ad eseguire i test sulla vostra macchina
- Posizionatevi nella directory creata unzippando l'archivio ed:
- rinominate il file program01.ita.py col nome program01.py
- analizzate il problema spezzandolo in funzioni piccole e descrivetelo nel file algorithm.txt (createlo con un editor di testo come Notepad++ o Spyder se non c'è)
- implementatelo editando il file program01.py
- Posizionatevi nella directory creata unzippando l'archivio ed editate i due file algoritmo.txt (descrizione dell'algoritmo) e program01.py (implementazione del programma)
- 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 che viene fatto dai test
- 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 (test con una stampa dei tempi impiegati per eseguire ciascun test)
- pytest test_01.py -v -rA --durations 0
- oppure (test 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-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 26/12/23 (consegnate entrambi i file algoritmo.txt e program01.py)
- Il giorno seguente vi verranno assegnati 3 algoritmi anonimi da valutare entro le 23:59 del 28/12/23
- Una volta ricevuti i suggerimenti dai compagni, dopo averli valutati tutti, potrete riconsegnare un programma migliore entro le 23:59 del 30/12/23
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=8
Potete consegnare più volte, vale l'ultima, dopo l'ultima scadenza tutti i codici sorgenti diverranno visibili a tutti.