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

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

[AVVISO] Homework 8 obbligatorio (ultima scadenza ore 23:59 del 19/12)

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

ATTENZIONE

  • Il file esempio2.txt manca dell'ultimo accapo (che dovrebbe esserci secondo la descrizione) ... state attenti che il vostro programma non faccia affidamento a quell'ultimo "\n" altrimenti non riconoscete la ZEBRA
  • Per una svista nel testo che descrive l'esercizio abbiamo scritto 'D' (destra) e 'B' (basso) e nei test e nei nostri programmi invece abbiamo sempre usato 'D' (destra) e 'G' (giù). Usate 'D' e 'G'.
  • ATTENZIONE: mancavano dei file, ho aggiornato lo zip, riscaricatelo (5 dic ore 16)
  • ATTENZIONE: l'algoritmo.txt dev'essere un file di testo utf8, usate direttamente spyder per editarlo
  • eventuali correzioni verranno inserite qui
  • NOTA: il programma test_01.py DISATTIVA la funzione print, quindi non vedrete stampe. Per riattivare le stampe mettete a True la variabile DEBUG all'inizio del file.

Istruzioni

Per svolgere l'homework:

  • Installate le librerie necessarie (compresa la libreria stopit)
  • Scaricate il file HW8obb.zip e scompattatelo in una directory
    • Lo zip contiene
      • l'esercizio da svolgere, descritto all'inizio del file program01.py
        • 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 ad eseguire i test sulla vostra macchina
  • Posizionatevi nella directory HW6obb creata unzippando l'archivio ed editate il file program01.py completando la funzione indicata
  • 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: E' VIETATO copiare codice dalle librerie di sistema.
  • 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 HW1opz ottenuta scompattando lo zip
    • eseguite il comando (test senza timeout)
      • pytest test_01.py -v -rA
    • oppure (test con timeout di 1 secondo per ciascun test e con una stampa dei tempi impiegati per eseguire ciascun test)
      • pytest test_01.py -v -rA --timeout 1 --durations 0
    • oppure (test con timeout di 1 secondo per ciascun test e stampa dei tempi spesi dal programma nelle 20 funzioni complessivamente più lente)
      • pytest test_01.py -v -rA --timeout 1 --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++

Consegna

Dovrete consegnare:

  • program01.py: il programma da voi realizzato
  • algoritmo.txt: una descrizione in italiano (o se necessario in inglese) dell'algoritmo che avete realizzato. La descrizione NON deve contenere codice o pseudocodice troppo dettagliato e deve essere anonima (NON deve contenere il vostro nome/cognome/matricola/nick)
    • ATTENZIONE: l'algoritmo.txt dev'essere un file di testo utf8, usate direttamente spyder per editarlo

La pagina di consegna è https://q2a.di.uniroma1.it/homeworks/delivery?homework=10

Scadenze

  • ore 23.59 del 15/12 entro questa data dovete tutti consegnare i 2 files program01.py e algoritmo.txt
  • Nella giornata del 2/12 verrà attivata la fase del peer-assessment formativo (correzione e suggerimento tra pari) e vi verranno assegnati 3 algoritmi anonimi da valutare e per i quali suggerire miglioramenti
  • ore 23.59 del 17/12 entro questa data potete inserire i vostri giudizi e suggerimenti su TUTTI i 3 algoritmi e ricevere i giudizi dai vostri compagni
    • NOTA: potreste ricevere meno di 3 suggerimenti
  • ore 23.59 del 19/12 scadenza finale per indicare quanto vi sono stati utili TUTTI i suggerimenti e quindi consegnare una versione migliorata del vostro programma

7 Answers

edoardottt (8210 points)
1 3 37
by (8.2k points)

Professore mi scusi un appunto. Nella descrizione del problema ci sono queste due frasi:

b) da una cella alla cella in basso (B)

di riga e colonna della cella da cui si parte e dalla stringa di 'D' e 'B'

Mentre nel resto della descrizione non c'è più B ma G. A quale delle due dobbiamo fare riferimento?

edo.13 (930 points)
2 2 8
by (930 points)
immagino che B corrisponda a G
E
Edward (25950 points)
3 4 172
by (26.0k points)
I risultati dei test usano G, quindi suppongo tu possa usare G e non B
edoardottt (8210 points)
1 3 37
by (8.2k points)
Si credo sia scontato. Credo che la G stia per giù. Ma era solo per chiarezza. Ho controllato anche test_01.json e negli expected c'è la G.
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)

Giusto, usate D e G (ho messo una nota in alto)

L
LeleAlpha (570 points)
3 4 6
by (570 points)
Salve,

fino a che lezione dobbiamo arrivare per essere in grado di sostenere questo homework?

Grazie,

Emanuele.
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
tutte e 18 (d'altro canto è l'ultimo homework del corso)
a
a.pietroluongo (11250 points)
20 39 131
by (11.3k points)
edited by
è normale che nel tab correttezza non viene visualizzato il tempo dei test passati?
E
Edward (25950 points)
3 4 172
by (26.0k points)
A me viene mostrato, ovviamente mostra solo quelli con tempo >= 0.01s
a
a.pietroluongo (11250 points)
20 39 131
by (11.3k points)
Ok mostra solo quelli con tempo >= 0.01s
a
a.pietroluongo (11250 points)
20 39 131
by (11.3k points)
Questo homework avrà sempre 3  test segreti?
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
Non è detto                              .
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
video lezioni da seguire per svolgere questo homework?
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
grazie edward
Alexei_Pozidriv (1580 points)
1 4 14
by (1.6k points)

Il file esempio2.txt manca dell'ultimo accapo (che dovrebbe esserci secondo la descrizione) ... state attenti altrimenti non riconoscete la ZEBRA

 Questo cosa vuol dire? Che devo aprire il file "esempio2.txt" con Spyder e aggiungere a ZEBRA un "accapo"(/n) e successivamente salvare ? o devo lasciare tutto così com'è?

andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
Vuol dire che (visto che non ho intenzione di cambiare i files dei test a metà consegna) il vostro programma non deve far affidamento sull'ultimo "\n" per funzionare bene
a
andreasolda (740 points)
15 17 21
by (740 points)
ma i feedback?