Do you need any help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2021-22 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 2021-22 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.

VIDEOLEZIONI DEL CORSO DI FONDAMENTI DI PROGRAMMAZIONE AA20-21

PROGRAMMING COURSE VIDEOCONFERENCES AY20-21

[HOMEWORK 2] Crucipuzzle, forum e robot [con test segreti]

andrea.sterbini (172680 points)
511 927 1776
asked Nov 7, 2018 in Avvisi by andrea.sterbini (172,680 points)
edited Dec 24, 2018 by andrea.sterbini

Istruzioni

ATTENZIONE HO AGGIUNTO I TEST SEGRETI ed aggiornato lo zip.

  • Ho aggiornato il file homewor02.zip
    • il file mp2.txt aveva alla fine un carattere ']' spurio che ho tolto
    • ora la descrizione dell'esercizio 2 è riallineata con il test
    • ho aggiunto le istanze dei test 01 e 02
    • ho aggiunto le virgole che mancavano in fondo ad alcune righe dei test dell'es3
    • ho tolto i trattini presenti in alcune parole (es1) ma non nella matrice
    • nel cp9 in fondo alle righe c'era un tab di troppo, l'ho eliminato
    • ho aggiunto istanze all'es3 e ne ho attivata una piccola
    • ho aggiunto istanze più grandi all'es3 basate su un percorso casuale e il suo simmetrico oppure il suo traslato
      • con il 5% di punti tutti dentro
      • con il 5% di punti tutti sul bordo
      • con 1000 punti tutti fuori
  • I timeout sono 5s, 3s, 1s per istanza e cercheremo di NON cambiarli

Per svolgere l'homework:

  • Installate le librerie necessarie
  • Scaricate il file homework02.zip (AGGIORNATO DEFINITIVO) e scompattatelo in una directory
    • Lo zip contiene
      • i tre esercizi, che sono descritti all'inizio dei file program01.py program02.py program03.py
        • ciascun esercizio consiste nel realizzare, se necessario definendo funzioni ausiliarie, la funzione descritta all'inizio del file, completandone il codice
      • altre librerie necessarie ad eseguire i test sulla vostra macchina
  • Posizionatevi nella directory homework02 creata unzippando l'archivio ed editate i file program01.py program02.py program03.py
  • Scrivete una descrizione in italiano (o inglese) dell'algoritmo che state implementando in un file di testo algoritmo0X.txt per ciascun esercizio
    • E' assolutamente VIETATO metterci codice python o descrizioni a livello di singola istruzione, dovete descrivere il RAGIONAMENTO
    • La descrizione deve essere ANONIMA (non indicate chi siete, plis)
  • ATTENZIONE: i programmi NON DEVONO eseguire nessun input() o print(), infatti ricevono tutte le informazioni di cui hanno bisogno tramite i parametri della funzione che dovete completare e tornano il risultato con return.
  • ATTENZIONE: SONO VIETATE le variabili globali.
  • ATTENZIONE: SONO VIETATE librerie per calcolo parallelo/multicore/gpu/multithread.
  • 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 homework02 ottenuta scompattando lo zip
    • eseguite il comando (test senza timeout)
      • pytest test_01.py -v
    • oppure (test del primo esercizio con timeout di 1 secondo per ciascun test e con una stampa dei tempi impiegati per eseguire ciascun test)
      • pytest test_01.py -v --timeout 1 --durations 0
    • Per chi usa Spyder è possibile eseguire i test direttamente da dentro Spyder installando il plugin spyder-unittest

NOTA: per aprire i file di testo in formato utf8 NON usate Notepad che non riconosce gli accapi Unix ('\n') ma usate Spyder, Notepad++ oppure WordPad

Consegna

Per la consegna dovrete consegnare per ciascun esercizio (for X in [1, 2, 3]: ) solo il file program0X.py e il file algoritmo0X.txt (sono necessari entrambi)

Ecco la pagina di consegna. I test automatici ancora non ci sono, appena posso li attivo (per il momento li lancerò io a mano ogni tanto)

Scadenze

  • prima consegna (algoritmo0X.txt e program0X.py) entro le ore 23:59 del 21 novembre 2018
    • potete consegnare più volte, vale l'ultima consegna
    • se cambiate in qualche modo l'algoritmo aggiornate anche il file algoritmo0X.txt
  • SOLO per chi ha consegnato:
    • peer-assessment: 3 giorni dalle 8AM del 22 novembre 2018 alle 23:59 del 24 novembre 2018
      • 3 algoritmi da valutare per ciascun esercizio, dando consigli su come migliorarli
  • SOLO per chi ha partecipato al peer-assessment:
    • seconda consegna migliorata e feedback sui consigli ricevuti: entro le ore 23:59 del 27 novembre 2018
5,704 views

Please log in or register to answer this question.