[HOMEWORK] Homework 4 obbligatorio

andrea.sterbini (167800 points)
488 897 1728
asked Nov 6, 2020 in Avvisi by andrea.sterbini (167,800 points)
edited Nov 8, 2020 by andrea.sterbini

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
    answered Nov 6, 2020 by stefanocali (1,230 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
    commented Nov 6, 2020 by e.pauroso (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
    commented Nov 6, 2020 by stefanocali (1,230 points)
    Ah, scusate! letto male io!
    p
    poshmato (450 points)
    1 4 8
    commented Nov 10, 2020 by poshmato (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)
    4 26 63
    answered Nov 7, 2020 by Oakandrew (6,400 points)
    Non ho capito bene, se [1,2,3] è equivalente a [1,2,3]
    andrea.sterbini (167800 points)
    488 897 1728
    commented Nov 7, 2020 by andrea.sterbini (167,800 points)
    1<->1, 2<->2, 3<->3           Certo
    O
    Oakandrew (6400 points)
    4 26 63
    commented Nov 7, 2020 by Oakandrew (6,400 points)
    Grazie per la risposta.

    Ma sono equivalenti perche 1!=2, 2!=3,1!=3 in ogni lista, giusto?
    twgever (14740 points)
    7 26 105
    commented Nov 7, 2020 by twgever (14,740 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)
    4 26 63
    commented Nov 7, 2020 by Oakandrew (6,400 points)
    capito, grazie
    c
    cosmintene (520 points)
    1 2 5
    answered Nov 7, 2020 by cosmintene (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
    commented Nov 7, 2020 by Mmariotti (480 points)
    se usi windows quando apri il file specifica la codifica UTF-8
    s
    stefano.fantauzzi (2260 points)
    3 6 17
    answered Nov 7, 2020 by stefano.fantauzzi (2,260 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 (167800 points)
    488 897 1728
    commented Nov 8, 2020 by andrea.sterbini (167,800 points)
    Vocali + accentate + consonanti + interpunzione

    Tutti tra 0 e 255
    s
    stefano.fantauzzi (2260 points)
    3 6 17
    commented Nov 8, 2020 by stefano.fantauzzi (2,260 points)
    Grazie mille, una sola pecisazione: ord('Ÿ') = 376, ma è l'unico caso che fa eccezione!
    andrea.sterbini (167800 points)
    488 897 1728
    commented Nov 10, 2020 by andrea.sterbini (167,800 points)
    AZZ ... nella generazione ho fatto una mayuscola ed ho sbordato ... sorry (i test restano uguali)
    Afelium (770 points)
    3 11 18
    answered Nov 15, 2020 by Afelium (770 points)
    edited Nov 15, 2020 by Afelium

    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
    commented Nov 15, 2020 by Edoardo Allegrini (930 points)
    Ciao, la j è considerata vocale ma non ha versioni accentate
    sinisimattia (840 points)
    0 3 8
    answered Nov 20, 2020 by sinisimattia (840 points)
    edited Nov 20, 2020 by sinisimattia
    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