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

Do you need help?

[HOMEWORK] Homework 4 obbligatorio

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

ATTENZIONE:

  • eventuali correzioni verranno inserite qui
    • la versione di testlib.py dello zip ha un bachetto che spunta se si usa il parametro encoding di open, sostituitela con quella dello HW3 oppure ri-scaricate lo zip aggiornato
    • Le vocali accentate hanno tutte 0<=ord(c)<256 ovvero SOLO le lettere àáâãäåèéêëìíîïòóôõöøùúûüýÿ (maiuscole o minuscole) che mappano tutte sulle lettere aeioujy
    • Le consonanti NON sono accentate (e non lo saranno in seguito)
    • Per capire meglio il concetto di modulo vedete la risposta https://q2a.di.uniroma1.it/18158/?show=18180#a18180
    • ATTENZIONE: il modulo deve essere > 2
    • i file che non sono usati in test_01.py sono rimasugli errati che mi sono dimenticato di buttare
  • 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 HW4req.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 15 novembre 2020
    • Il 16 novembre vi verranno assegnati fino a 3 file program01.txt da valutare e consigliare entro le 23:59 del 17/11/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 19/11/20)

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

    Potete consegnare più volte, vale l'ultima.

    6 Answers

    s
    stefanocali (1230 points)
    1 2 9
    by (1.2k points)
    Buongiorno, sto effettuando questo Homework, credo che ci sia un problema sui risultati,
    Nel file examples.json, il risultato finale è il seguente:

    "filename" :     "example.txt",
    "prosody":        [0, 1, 1, 2, 1, 3, 4, 4, 5, 4],
    "module":        5,
    "lengths":         [13, 6, 6, 14, 6, 13, 6, 6, 14, 6],
    "finals":         ["stra", "ldy", "ldy", "shy", "ldy", "shy", "zi", "zi", "rsley", "zi"]

    la prosody non dovrebbe essere invece: [0, 1, 1, 2, 1, 2, 3, 3, 4, 3]

    Grazie per l'attenzione
    e
    e.pauroso (420 points)
    0 0 4
    by (420 points)
    - a ciascuno dei versi successivi va associato:
            1) l'intero che è stato già associato ad un verso precedente che ha stesso #ES e finale
            2) altrimenti un nuovo intero (che segue l'ultimo già usato)

    attenzione al primo punto
    s
    stefanocali (1230 points)
    1 2 9
    by (1.2k points)
    Ah, scusate! letto male io!
    p
    poshmato (450 points)
    1 5 8
    by (450 points)
    scusate ma anche io mi ritrovo con la prosodia = [0, 1, 1, 2, 1, 2, 3, 3, 4, 3].

    mi spiegate come vi torna quest'altra?

     [0, 1, 1, 2, 1, 3, 4, 4, 5, 4]
    O
    Oakandrew (6400 points)
    7 27 64
    by (6.4k points)
    Non ho capito bene, se [1,2,3] è equivalente a [1,2,3]
    andrea.sterbini (207920 points)
    750 1267 2373
    by (208k points)
    1<->1, 2<->2, 3<->3           Certo
    O
    Oakandrew (6400 points)
    7 27 64
    by (6.4k points)
    Grazie per la risposta.

    Ma sono equivalenti perche 1!=2, 2!=3,1!=3 in ogni lista, giusto?
    twgever (17470 points)
    8 29 105
    by (17.5k points)
    sì, sostanzialmente se hai lo schema [1,2,3], allora basta che ogni schema successivo abbia 3 elementi diversi.

    se lo schema dovesse essere [1,2,1], allora tutti gli schemi successivi dovranno avere il primo elemento uguale all'ultimo elemento, e quello in mezzo diverso.
    O
    Oakandrew (6400 points)
    7 27 64
    by (6.4k points)
    capito, grazie
    c
    cosmintene (520 points)
    1 2 5
    by (520 points)
    Ho un problema quando apro il file esempio.txt. Le lettere "ò" e "ì" vengono riportate in modo strano in spyder. Ho scaricato lo zip aggiornato ma il problema rimane!
    M
    Mmariotti (480 points)
    1 2 7
    by (480 points)
    se usi windows quando apri il file specifica la codifica UTF-8
    s
    stefano.fantauzzi (2260 points)
    4 6 17
    by (2.3k points)
    Ciao,

    vorrei sapere se fosse possibile conoscere il range di ord(c) dei caratteri nel testo o se dobbiamo considerare ogni possibile evenienza. Faccio questa domanda perché ho visto che è stato specificato per le vocali accentate.

    Grazie, in anticipo
    andrea.sterbini (207920 points)
    750 1267 2373
    by (208k points)
    Vocali + accentate + consonanti + interpunzione

    Tutti tra 0 e 255
    s
    stefano.fantauzzi (2260 points)
    4 6 17
    by (2.3k points)
    Grazie mille, una sola pecisazione: ord('Ÿ') = 376, ma è l'unico caso che fa eccezione!
    andrea.sterbini (207920 points)
    750 1267 2373
    by (208k points)
    AZZ ... nella generazione ho fatto una mayuscola ed ho sbordato ... sorry (i test restano uguali)
    Afelium (770 points)
    6 12 21
    by (770 points)
    edited by

    Le vocali accentate hanno tutte 0<=ord(c)<256 ovvero SOLO le lettere àáâãäåèéêëìíîïòóôõöøùúûüýÿ (maiuscole o minuscole) che mappano tutte sulle lettere aeioujy

    Volevo chiedere se nei test la lettera 'j' è considerata vocale e se ha versioni accentate (e quali)

    My bad, mi era sfuggita nell'elenco (questa svista mi è costata 30 anni di debug)

    E
    Edoardo Allegrini (930 points)
    1 6 8
    by (930 points)
    Ciao, la j è considerata vocale ma non ha versioni accentate
    sinisimattia (870 points)
    0 3 8
    by (870 points)
    edited by
    Scusi prof ho provato a consegnare alle 23:58 ma mi dice che devo attivare il corso anche se gia l'ho fatto.

    Posso consegnare comunque? Spero che il mio lavoro venga valutato comunque come prima consegna