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.

Es3 Problema

DRDLCN (8070 points)
27 68 104
in Es3 by (8.1k points)
closed by
Ho sistemato il codice e ora passo 11 test su 13 tranne per due che si aspettano 0 coordinate giuste

Ho capito dove é il problema sicuramente devo fare dei controlli aggiuntivi, io per adesso controllo solo se la y == y1 con un if
NON controllo se la y == y2 ma metto tutto in else
Può essere un errore?

Da quello che ho capito i test che non passo sono quelli in cui i punti stanno lungo il perimetro dei robot, non sforo di tanto

In uno restituisco 9 != 0
Nell'altro 14 != 0

La cosa che non capisco é questa:
Ho provato ad aggiungere coordinate sul perimetro nella mappa mp1 ma niente l'output è giusto infatti non vengono contate, allora mi chiedo come è possibile? Perché in un test le coordinate sul perimetro vengo "trascurate" e in un altro no? Sono punti ancora più specifici? O ancora sbaglio qualche controllo?
741 views
closed with the note: deadline passed

3 Answers

VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
probabilmente hai preso troppe coordinate di robot 1 o robot 2 che non servirebbero e con i controlli queste fanno passare delle coordinate che non dovrebbero. Voglio dire che hai preso troppe coordinate e di conseguenza insufficienti controlli per le coordinate prese. se predi solo le coordinate essenziali ti basta vedere se y è strettamente compresa tra y1 e y2, dove queste tre y avranno la stessa x. basta solo questo semplice controllo. Ti consiglio di provare su carta e vedere se prendi coordinate inutili, altrimenti provvedi a scrivere più controlli
DRDLCN (8070 points)
27 68 104
by (8.1k points)
Io prendo solo le coordinate essenziali in realtà é questo il punto, le pulisco prima di fare i controlli...
Certamente non posso pulire tutte

Con dei print sono riuscito a capire che il problema si presenta quando la coordinata da checkare ha y == a uno dei due robot, la x é apposto
Forse hai ragione te, pulendo le coordinate non c'é bisogno che controlli quando la y == y1 o alla y2
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
ti suggerisco che le coordinate essenziali sono di pari numero sia in robot 1 che robot 2, e vanno da 2 fino alla coordinata x finale meno uno, senza nessuna ripetizione di x
DRDLCN (8070 points)
27 68 104
by (8.1k points)
Io prendo solo le coordinate che non hanno y == 1 e che non hanno x == 1 inoltre levo tutte le coordinate al di fuori della x massima e della y massima
Che intendi per pari numero? E che intensi per "senza nessuna ripetizione di x?"
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
se le coordinate essenziali che prendi del robot 1 sono ad esempio 10 anche robot 2 sicuramente avrà 10 coordinate essenziali. e le x delle 10 coordinate di robot 1 saranno ad esempio 2,3,4,5,6,7,8,9,10,11 (sono 10 nel caso il robot si ferma in ascissa 12 alla fine di tutto, partendo da ascissa 1). Analogamente per le 10 ascisse di robot 2 che saranno 2,3,4,5,6,7,8,9,10,11. Naturalmente avranno le ordinate diverse se non percorreranno lo stesso percorso e uguali(non so se è possibile nei file che il prof ha dato) se camminano sullo stesso percorso. una volta trovate solo le coordinate essenziali sarà facilissimo fare l'unico confronto che è anche scritto sul testo del problema
DRDLCN (8070 points)
27 68 104
by (8.1k points)
Per la mp1 quali coordinate essenziali trovi? Io ne trovo 7 sono giuste?
Con l'unico controllo che sta scritto nel testo non serve controllare anche le x quindi ? E se la x si trova sul perimetro?
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
sono essenziali proprio perchè non devi fare altri controlli
Sickboy (28240 points)
7 25 68
by (28.2k points)
Non ho capito bene cosa intendi che metti tutto in else, se lo metti nell else della prima condizione non è detto che li la seconda è vera, comunque anch'io avevo un problema del genere, ti consiglio di crearti un piccolo percorso tu a mano e modificare il file con i passi e mettere le coordinate che stanno su tutto il percorso poi col debugger vedi perché vengono prese quelle sbagliate e correggi nel codice, è un po spartano come metodo però cosi io mi sono risolto tutti i problemi.
DRDLCN (8070 points)
27 68 104
by (8.1k points)
La cosa che non capisco é questa:
Ho provato ad aggiungere coordinate sul perimetro nella mappa mp1 ma niente l'output è giusto infatti non vengono contate, allora mi chiedo come è possibile? Perché in un test le coordinate sul perimetro vengo "trascurate" e in un altro no? Sono punti ancora più specifici? O ancora sbaglio qualche controllo?
a
alex_err (5800 points)
1 3 32
by (5.8k points)

Si, il mancato controllo di y == y2 è un errore. Se y2 è una l'ordinata del secondo robot e y è l'ordinata di un punto, la x del punto potrebbe stare sul piano del secondo robot.
In questi casi, molto probabilmente, il robot2 nei movimenti successivi non si alza ulteriormente ma tende ad andare verso destra (aumenta la x). 


Se in uno stato iniziale del robot2 hai (x2, y2), dopo aver calcolato anche tutti i movimenti delle x (necessarie per il controllo) avrai (x2+mov, y2). Da notare che la y2 è la stessa, poiché la nostra condizione è proprio y == y2 e non y < y2.
E' facile capire che se il tuo punto ha x compresa tra [x2, x2+mov] (compresi) non è da contare come punto proprio perché non si trova all'interno del perimetro generato.