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.

come fare per trovare se è compreso nel terzo esercizio

Light (5130 points)
59 181 229
in Es3 by (5.1k points)
ho letto il consiglio del prof sul testo di vedere se a una certa x di quella tupla che vogliamo trovare la coordinata y è compresa tra le due y del percorso dei due robottini; ora il mio dubbi è se quella x che vogliamo trovare corrisponde soltanto a una x di un robottino mentre a quell'altro no (es se voglio trovare (3,4) ed ho un (3,5) di un robottino ma l'altro ha solo (5,3) ed (2,3) come faccio?) capite il mio dubbio se solo una x corrisponde come si puo fare?
758 views
closed

3 Answers

Best answer
Xriuk (13590 points)
8 24 116
by (13.6k points)
selected by
Ti puoi ricavare il grafico del movimento di ogni robottino (coppie X e Y da 1 fino al punto finale) partendo da (1,1) e sviluppando i movimenti in ordine, ad esempio: se un robot da (3,2) si sposta di 5 caselle a destra, avrai i seguenti punti (4,2), (5,2), (6,2), (7,2), (8,2).

Una volta ricavato il grafico di ogni robottino, è semplicissimo controllare se un punto rientra fra i due.
Light (5130 points)
59 181 229
by (5.1k points)
e questo posso farlo nella mia funzione piano piano o devo farne un altra boss?
Xriuk (13590 points)
8 24 116
by (13.6k points)
Dipende tutto dalla complessità che vuoi ottenere, se vuoi abbassare la complessità fai un'altra funzione
Light (5130 points)
59 181 229
by (5.1k points)
complessita != efficenza right?
Xriuk (13590 points)
8 24 116
by (13.6k points)
Eh, sì, di solito o penalizzi una o penalizzi l'altra: un programma più complesso va più veloce (di solito, ma non sempre), un programma meno complesso è più leggibile. Trovare un giusto compromesso è un'arte.
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
se lavori con gli insiemi puoi fare l'intersezione delle coordinate sotto al grafico del primo robot con quelle del secondo e poi un intersezione con quelle che vanno confrontate
Light (5130 points)
59 181 229
by (5.1k points)
wut come puo l'intersezione risolvere questa cosa? l'intersezione prende le tuple quelle non uguali quello ma si ma quelle che sono fuori dal grafico? quelle come fa a sapere se stanno fuori e actually sto lavorando con liste ma ogni soluzione è ben accetta e ci metto poco a cambiare
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
le intersezioni dei tre insiemi di coordinate (ins1=tutte le coordinate al di sotto del perscorso del robottino, ins2=analogamente per il robot2 e ins3=l'insieme delle coordinate date dal testo) generano le coordinate comprese in ogni insieme e quindi quelle che ti interessano
Light (5130 points)
59 181 229
by (5.1k points)
no aspetta...mo faccio prova ma davvero non capisco perche succede cio? perche funziona l'intersezione? rispiegami cosa fa l'intersezione perche mi prende le tuple comprese?
Light (5130 points)
59 181 229
by (5.1k points)
ah oddio aspetta cosa intendi te per "coordinate al di sotto del percorso del robottino?" quelle che te trovi quando ti muovi? pero quelle sono il bordo no? right?
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
nel mio programma ho generato un insieme che ha tutte le coordinate che stanno al di sotto del percorso del primo robot. mentre nell'insieme delle coordinate per il secondo robot ho messo tutte le coordinate che si presentano sopra al percorso del secondo robot cosi da poter intersecare i due insiemi e infine fare l'intersezione con l'ultimo insieme. Quello che vuoi fare tu è un po diverso ed è vero che l'intersezione non è essenziale, però possibile. Per darti un aiuto diretto prendi in considerazione tutte le coordinate del PERCORSO che fa il primo robot, e anche quelle del percorso del secondo. le coordinate di qui i robot hanno in comune la stessa x dovranno essere confrontate con quelle date dal problema con la stessa x, dove la y dovrà essere strettamente compresa tra la y del robot1 e la y del robot 2
Light (5130 points)
59 181 229
by (5.1k points)
mmh quindi se in un robottino i passi che ho sono [(3,5),(6,5)] mi devo costruire un altra lista che ha [(3,5),(4,5).(5,5).(6,5)]
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
fai semplicemente scorrere la lista dei movimenti che deve fare ogni robot e in base al movimento che deve fare aggiorna il suo insieme di coordinate con quelle in cui è stato alla fine avrai due insiemi che rappresentano la scia di ogni robot. Ora se studi il grafico noterai che le coordinate che sono dentro alla figura che i due robot formano, per ogni colonna(ovvero per ogni x in comune) le coordinate dentro alla figura avranno sempre la y compresa tra quella del primo robot e quella del secondo. Fai degli esempi su carta e noterai che il concetto e semplice e dovrai solo scrivere il codice giusto
a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
Grandissimo!!! Le intersezioni tra le aree sotto il percorso dei due robot e poi vedi quali tra le coordinate in input sono ricomprese. Ma l'intersezione non prende anche il percorso? Devo memorizzare a parte e escluderlo vero?
p
pietrobrega (4460 points)
6 13 42
by (4.5k points)
Rispondo al tuo dubbio: guardi la prima coordinata con x >= alla x del quadrato che stai controllando.
Quindi per robot1 andrà bene la coordinata (3,5) mentre per robot2 sarà (5,3)