[HOMEWORK] Homework 2 obbligatorio

andrea.sterbini (172680 points)
511 927 1776
asked Oct 27, 2021 in Avvisi by andrea.sterbini (172,680 points)
edited Nov 5, 2021 by andrea.sterbini

ATTENZIONE:

  • eventuali correzioni verranno inserite qui, tenete d'occhio questa pagina
    • come segnalato sotto da @Wahya, nel 4° esempio c'è un refuso (ma la graduatoria nel testo è corretta)
      • Alla fine 0 ha 0 sfide, 1 ha 1 sfida e 2 ha 2 sfide ( 1 ha 2 sfide e 2 ha 1 sfida), per cui
    • NON modificate il contenuto degli argomenti. Ho aggiunto un test per far fallire queste modifiche.
    • NOTATE che mi sono dimenticato di togliere il warp-factor 2 dai test che vi ho dato nello ZIP, e che doveva essere applicato SOLO alla VM. Quindi sulle vostre macchine che girano molto più veloci avete un timeout di 12s invece che 6s. Per "giocare alla pari" dovreste togliere il *2 all'inizio di test_01.py
  • NOTA: per eseguire i test SENZA i controlli e il timeout modificate test_01.py settando la variabile DEBUG=True
  • NOTA: ricordo a tutti che verranno applicati dei test segreti, quindi ogni soluzione che sfrutta particolari condizioni presenti nei test pubblicati potrebbe fallire.

Istruzioni

Per svolgere l'homework:

  • Installate le librerie necessarie (COMPRESO stopit)
  • Scaricate il file HW2-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
    • 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() 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
      • 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 6/11/21 (consegnate entrambi i file)
  • Il giorno seguente vi verranno assegnati 3 algoritmi anonimi da valutare entro le 23:59 del 8/11/21
  • Una volta ricevuti i suggerimenti dai compagni, dopo averli valutati tutti, potrete riconsegnare un programma migliore entro le 23:59 del 10/11/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=2

Potete consegnare più volte, vale l'ultima.

12 Answers

M
MattiaCapozzolo (300 points)
0 0 2
answered Nov 8, 2021 by MattiaCapozzolo (300 points)
Buonasera,

ma da quando sarà possibile ricaricare l'homework? Se invece non lo ricarichiamo mantiene quello inserito entro il 6?

Grazie
andrea.sterbini (172680 points)
511 927 1776
commented Nov 8, 2021 by andrea.sterbini (172,680 points)
quanta impazienza
S
S3b4stian82 (2250 points)
3 6 27
answered Nov 9, 2021 by S3b4stian82 (2,250 points)
Ci deve essere di nuovo qualche problema di orario sulla vm.

Dopo l'ultimo caricameto, l'orario di test precede quello di consegna di 10 minuti e lo stato rimane su Uploaded. Il tutto sono sicuro è comunque andato a buon fine in quanto l'efficienza è cambiata rispetto alla consegna precedente.