[HOMEWORK] Homework 6 obbligatorio [ZIP UPDATED]

andrea.sterbini (167800 points)
488 897 1728
asked Nov 24, 2021 in Avvisi by andrea.sterbini (167,800 points)
edited Nov 26, 2021 by andrea.sterbini

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
  • 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
  • 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
  • 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.

1 Answer

A
AlessandroBavaro (10620 points)
4 8 24
answered Dec 4, 2021 by AlessandroBavaro (10,620 points)
Buonasera Professore,

mi è sorto un dubbio. Fino ad oggi ho consegnato il file algorithm in bianco per evitare di doverlo riscrivere ogni volta che modificavo il programma, ma oggi ho riconsegnato lo stesso codice ma col file algorithm completato.

Il fatto è che riconsegnando mi ha dato i tempi un po' più lunghi, seppur il codice sia lo stesso e non vorrei che quando nei prossimi giorni verrà inviato il file algorithm ai miei colleghi gli sia inviato il file algorithm vecchio (risultando il codice più efficiente di quello che ho consegnato oggi).
andrea.sterbini (167800 points)
488 897 1728
commented Dec 4, 2021 by andrea.sterbini (167,800 points)
i precedenti vengono sovrascritti