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 di recupero (scadenza 5 gg prima dell'esame) [ZIP UPDATED 28/12]

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

ATTENZIONE:

  • eventuali correzioni verranno inserite qui
    • Come discusso in https://q2a.di.uniroma1.it/21149 uno dei file conteneva una tile senza il bordo completo. Abbiamo aggiornato i file dello ZIP (RISCARICATELO) e della VM.
    • Nello zip c'erano dei file spuri, inoltre il testo dell'esercizio aveva bisogno di un paio di correzioni.
    • Come discusso in https://q2a.di.uniroma1.it/21019 il valore che va tornato deve essere nell'ordine (N, S E, W) invece che nell'ordine (N, S, W, E) come indicato nella versione precedente dello ZIP
    • Ho aggiornato lo ZIP, riscaricatelo
  • 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 HW6rec.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
      • 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 con il nome program01.py
  • Editate il file program01.py implementando le funzioni necessarie a risolvere l'esercizio.
  • 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

  • Gli homework di recupero scadono 5 giorni prima dell'esame che volete svolgere

Consegna entro le 23:59 di 5 gg prima dell'esame

Dovrete consegnare solo il file program01.py

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

Potete consegnare più volte, vale l'ultima.

3 Answers

g
giacomo_venturini (6680 points)
3 6 40
by (6.7k points)
Salve, si può assumere che le dimensione delle caselle siano fisse all'interno di una stessa mappa?
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
Sì tutte le mappe sono fatte da una griglia di caselle quadrate di stessa dimensione, circondate da un bordo grigio per le caselle percorribili.
Le dimensioni sono uguali per la stessa mappa ma potrebbero essere diverse per mappe diverse.
g
giacomo_venturini (6680 points)
3 6 40
by (6.7k points)

Però questa parte di testo fa intendere il contrario:

Una volta esplorata una stanza (ovvero affrontato tutti mostri e
raccolto tutti i tesori), l'esplorazione continuerà entrando nella
prima porta della stanza che si trova seguendo la parete a sinistra
della porta da cui il party è entrato.

E se così non fosse nel caso in cui a sinistra si trovi un corridoio si entrerà in questo o si deve cercare una porta?

angelo.spognardi (8170 points)
75 155 224
by (8.2k points)
Non ho ben capito il commento: tu devi entrare nella prima porta che trovi seguendo il muro alla sinistra della porta da cui sei entrato e se c'è un corridoio o un'altra stanza, ti adegui a quello che trovi. Non ci sono stanze alle quali si accede senza attraversare una porta.
g
giacomo_venturini (6680 points)
3 6 40
by (6.7k points)
Scusate, ho sbagliato commento, dovevo rispondere sotto all'altro, grazie della risposta comunque
r
roberto.alma (490 points)
1 2 5
by (490 points)
Sempre in tema di caselle. Volevo chiedere se la dimensione delle caselle è quella delle caselle bianche (senza contare i bordi). Mi sembra che nella immagine mini siano 17 pixel bianchi per lato circondate da un bordo di 1 pixel. Ma per quelle non percorribili dobbiamo immaginare che ci sia un bordo o no ?
angelo.spognardi (8170 points)
75 155 224
by (8.2k points)
Non mi è ben chiaro cosa intendi per "non percorribili": se intendi le caselle nere, che ci sia un bordo o meno mi pare irrilevante, o mi sfugge qualcosa nel senso della tua domanda?
g
giacomo_venturini (6680 points)
3 6 40
by (6.7k points)
Corridoi e stanze sono sempre separati da una porta?
angelo.spognardi (8170 points)
75 155 224
by (8.2k points)
Corridoi e stanze sono sempre separati da una porta.
r
rac.conte (360 points)
1 4 5
by (360 points)
Ho un dubbio:

supponiamo che questa sia una simulazione X che comincia andando a NORD. Dopo un pò, bisogna tirare il dado perchè ci sono due percorsi possibili: EST e OVEST. Si segue quanto detto dal dado andando a EST, e si muore.

Bisognerà poi prevedere ulteriori simulazioni, sempre partendo verso NORD, finchè il dado non mandi a OVEST, così da inserire nella tupla finale, in posizione 0 (quindi corrispondente a inizio verso Nord) il solo risultato tra i due più conveniente? O basterà fare una sola simulazione del percorso, e i test prevederanno la possibilità che vi sia un esito non ottimale (quindi il test per il percorso nord sarà OK indifferentemente da che il dado abbia detto EST o OVEST, purchè i passaggi seguenti siano giusti) ?
angelo.spognardi (8170 points)
75 155 224
by (8.2k points)
Ciao, no: il dado decide la sorte dell'esplorazione verso NORD. Quindi: se al party gli dice sfiga, s'attacca... Ed riparte dalla casella iniziale tentando un'altra direzione.