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

Do you need help?

[HOMEWORK] Homework 6 obbligatorio [AGGIORNATO]

andrea.sterbini (207920 points)
750 1267 2373
in Avvisi by (208k points)
edited by

ATTENZIONE:

  • eventuali correzioni verranno inserite qui
    • ho aggiunto degli altri test, ri-scaricate lo zip
      • attenzione: per la "velocità" della VM ho commentato i due test random-40 e random-50 e non vengono eseguiti
    • l'immagine random-5.png aveva un problema e l'ho sostituita RISCARICATE LO ZIP
    • i rettangoli sono sempre allineati con gli assi (non sono obliqui)
    • come giustamente mi è stato fatto notare, l'esempio di conversione da base 256 a base 10 è sbagliato
      • il conto giusto è 1 * 256^2 + 2*256 + 3 = 66051
  • 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 HW6req.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 29 novembre 2020
    • Il 30 novembre vi verranno assegnati fino a 3 file program01.txt da valutare e consigliare entro le 23:59 del 1/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 3/12/20)

    Prima Consegna obbligatoria entro le 23:59 del 29/11/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=7

    Potete consegnare più volte, vale l'ultima.

    10 Answers

    P
    Pikarz1 (550 points)
    0 0 3
    by (550 points)

    Salve prof, avrei una domanda.

    Per definire un rettangolo sarebbe sufficiente sapere che il pixel che stiamo iterando sia un angolo e che il colore di quel pixel sia diverso dai colori degli altri rettangoli che abbiamo trovato finora?

    Per metterla più in pratica, ci saranno finti rettangoli a cui manca un lato (o forse più) che non dovremmo prendere in considerazione?

    La ringrazio.

    andrea.sterbini (207920 points)
    750 1267 2373
    by (208k points)
    No, l'immagine contiene solo veri rettangoli
    r
    roberto.alma (490 points)
    1 2 5
    by (490 points)
    Domanda, per eseguire questo HW a quale videolezione (corso unitelma) dovremmo essere arrivati?
    g
    giacomo_venturini (6680 points)
    3 6 40
    by (6.7k points)
    Almeno alla 12, fino alla 15 possono aiutare parecchio e anche la ricorsione può essere sfruttata
    O
    Oakandrew (6400 points)
    7 27 64
    by (6.4k points)
    Salve.

    Volevo sapere se ci sono i timeout in questo HW
    G
    Giordano_Dionisi (3100 points)
    16 41 59
    by (3.1k points)
    Si sono circa 2 secondi e qualcosina
    Afelium (770 points)
    6 12 21
    by (770 points)
    Come detto nella consegna i rettangoli non possono avere lati sovrapposti per lungo, ma puo capitare che abbiano due lati "adiacenti"?(nessun pixel nero tra il lato di un rettangolo e quello di un'altro)
    AdSum (16290 points)
    9 20 134
    by (16.3k points)
    Spero vivamente di no o sarà un bel grattacapo.
    P
    Pikarz1 (550 points)
    0 0 3
    by (550 points)
    Se non erro il prof a lezione aveva detto di sì.
    andrea.sterbini (207920 points)
    750 1267 2373
    by (208k points)
    certo                        .
    twgever (17470 points)
    8 29 105
    by (17.5k points)
    prof, per caso ha ricaricato il file? perchè oggi scaricandolo, e facendo i test, mi dà come errore "filenotfound (...) no such file or directory "test_*nometest*" . è un problema solo mio?
    G
    Giordano_Dionisi (3100 points)
    16 41 59
    by (3.1k points)

    Prof ma che intende con ciò:

    • attenzione: per la "velocità" della VM i due test random-40 e random-50 non vengono eseguiti
    Cioè intende che la Virtual Machine proprio non "termina" la sua esecuzione ??
    andrea.sterbini (207920 points)
    750 1267 2373
    by (208k points)
    no, che in test_01.py li ho commentati
    G
    Giordano_Dionisi (3100 points)
    16 41 59
    by (3.1k points)
    Okay perfetto e quindi perchè li ha commentati, così per curiosità ??
    andrea.sterbini (207920 points)
    750 1267 2373
    by (208k points)
    l'ho detto prima
    twgever (17470 points)
    8 29 105
    by (17.5k points)
    Scusi per il disturbo prof, ma quindi quei due test saranno eseguiti insieme ai test segreti?
    andrea.sterbini (207920 points)
    750 1267 2373
    by (208k points)

    ... in modo che tutti falliscano i test per timeout e nessuno prenda 30 e i bonus?

    ottima idea devil se me lo chiedi gentilmente lo faccio

    G
    Giordano_Dionisi (3100 points)
    16 41 59
    by (3.1k points)
    Non avevo capito che fossero così pesanti, allora ora li devo assolutamente provare.. Io avevo capito che erano test facili facili
    G
    Giordano_Dionisi (3100 points)
    16 41 59
    by (3.1k points)
    Comunque prof, anche se ci metto un pò, passo anche i test grossi grossi... Mi sento quasi quasi soddisfatto del mio lavoro ahahahhaah
    a
    arianna_paolini (1080 points)
    1 2 3
    by (1.1k points)
    edited by
    Salve, avrei una domanda:

    nella sequenza per la costruzione dei rettangoli, è possibile che vengano disegnati rettangoli che in una prima fase non intersecano alcun rettangolo, per poi essere intersecati dai rettangoli disegnati in seguito? o possiamo assumere che durante la sequenza di costruzione ciascun rettangolo ne intersechi almeno un altro in ogni fase(ovviamente a partire dal punto in cui si hanno almeno 2 rettangoli)?
    twgever (17470 points)
    8 29 105
    by (17.5k points)
    Ogni rettangolo ha almeno una intersezione, e direi che non puoi fare un rettangolo senza intersezioni per poi aggiungerle dopo, perchè ti scombussolerebbe l'ordine, non sapresti quando metterlo. lo metti come primo rettangolo? come secondo? come trentesimo?
    M
    Mmariotti (480 points)
    1 2 7
    by (480 points)
    Visto che deve esistere una sequenza univoca di disegno ti direi di no, se fosse come dici tu, quei due rettangoli non avrebbero una gerarchia definita
    a
    arianna_paolini (1080 points)
    1 2 3
    by (1.1k points)
    Sì infatti immaginavo fosse così, ma meglio essere sicuri.

    Invece i bordi dei rettangoli possono avere spessori variabili o sono tutti linee spesse un solo pixel?
    M
    Mmariotti (480 points)
    1 2 7
    by (480 points)
    a
    arianna_paolini (1080 points)
    1 2 3
    by (1.1k points)
    Perfetto, grazie mille
    sinisimattia (870 points)
    0 3 8
    by (870 points)

    Buongiorno,

    sto avendo problemi con i test, in particolare con i dizionari.

    Se eseguo il mio programma normalmente l'utilizzo di una tupla come chiave del dizionario non da problemi, quando eseguo gli unit-test, invece, mi da un KeyError

    Per caso lei sa se questo è un problema con la mia configurazione?

    Grazie in anticipo

    m
    massimocoppola (950 points)
    2 18 21
    by (950 points)
    come hai risolto?
    Alessio Natalucci (3660 points)
    7 10 23
    by (3.7k points)

    Buonasera professore,

    Nelle note c'è scritto che:

    • attenzione: per la "velocità" della VM ho commentato i due test random-40 e random-50 e non vengono eseguiti

    Scaricando però il file zip i due test citati non sono commentati bensì lo sono i test random-75, random-100, random-150. Come dobbiamo comportarci con i test random-40 e random-50, ignorare anche questi due o solo quelli che sono già commentati?

    CiZ (3810 points)
    5 13 21
    by (3.8k points)
    I test fatti sulla VM sono fino al test random-30

    Esclusi quelli che hai citato tu e quelli che ha citato il professore
    D
    Diegospaziani (270 points)
    0 0 1
    by (270 points)
    Me lo stavo chiedendo pure io infatti...
    Alessio Natalucci (3660 points)
    7 10 23
    by (3.7k points)

    @CiZ grazie mille! 

    s
    stefano.fantauzzi (2260 points)
    4 6 17
    by (2.3k points)
    Buongiorno professore,

    a seguito dei test segreti sull hw 6 ho avuto un incremento dei tempi di esecuzione del 30% che mi pare abbastanza sopra la media, mi chiedevo se sono stato semplicemente sfortunato o effettivamente diversamente dagli altri hw sono stati eseguiti test per così dire un po' più pesanti che inficiano le permorfance.

    Grazie in anticipo per la risposta,

    Stefano
    andrea.sterbini (207920 points)
    750 1267 2373
    by (208k points)
    Ho aggiunto 5 test, di cui due medi. L'aumento dei tempi è normale. Dovrebbe essere proporzionalmente uguale per tutti.

    (altrimenti è sfiga :( )
    Fratabbacchio (470 points)
    0 4 9
    by (470 points)
    Buonasera professore,

    Prima dei test segreti avevo il bonus per la cc, dopo questi ultimi, invece, nessun bonus. Come mai?

    (Chiedo solo per curiosità, per un paio di punti non ho nulla di cui lamentarmi)
    andrea.sterbini (207920 points)
    750 1267 2373
    by (208k points)
    Mi sembra un errorino di visualizzazione su Q2A. In realtà prendono 2cc tutti quelli che sono a parimerito con l'ultimo della metà alta della classifica. Quando faccio la tabella lo faccio in modo corretto.