Do you need 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

Come approcciare l'es1 dell'homework

Gianluigi (1420 points)
7 17 30
in Es1 by (1.4k points)
closed by
Ciao a tutti.
Ho pensato di scorrere tutti i pixel procedento per righe ed settare per ogni pixel un contatore che indica la lunghezza della sequenza di pixel dello stesso colore a partire dal pixel corrente. Però poi dovrei trovare un modo di fare confronti nel modo giusto tra i vari contatori, il che mi sembra molto macchinoso.

Deve sicuramente essereci un approccio migliore, che non riesco a vedere. Qualche suggerimento?
490 views
closed with the note: Risolto

1 Answer

Best answer
m
mirko (1920 points)
3 12 19
by (1.9k points)
selected by
Ciao,
prova a ragionare sul fatto che un quadrato può essere individuato dalle coordinate del vertice in alto a sinistra e dalla lunghezza del lato, e che, una volta scelti questi due parametri, è facile verificare se il quadrato individuato è monocolore
Gianluigi (1420 points)
7 17 30
by (1.4k points)
In che modo posso verificare se il quadrato è monocolore, se non scorrendo tutti i pixel singolarmente?
D
Domenicobrz (1470 points)
2 9 19
by (1.5k points)
Assumendo tu abbia trovato un "quadrato potenziale" e verificato (scorrendo singolarmente tutti i pixel) la presenza di un quadrato di dimensioni x, tutti i pixel i cui "quadrati potenziali" sono più piccoli di x possono essere scartati
M
Matt_Ruggiero (2380 points)
12 39 45
by (2.4k points)
mi aggiungo alla discussione... ma non mi è chiaro quest'ultimo passaggio :|
Gianluigi (1420 points)
7 17 30
by (1.4k points)
Bella intuizione Domenicobrz!! Ma da quanto ho capito bisogna comunque scorrere tutti i pixel. Seguimi, e dimmi dove sbaglio: ho il mio quadrato con lato di lunghezza x (supponiamo che inizia dal primo pixel in alto a sinistra) e nel pixel della prima riga, alla colonna x+1 c'e un pixel di colore diverso. a partire dal pixel alla prima riga, colonna x+2, inizio a cercare un quadrato migliore, controllando se nei successivi x pixel c'e un pixel di colore diverso (in questo caso, interrompo l'iterazione corrente e ritorno a scorrere i pixel a partire da quello in prima riga, colonna x+3, ecc.).
E rifaccio questo per tutte le altre righe.
Era qui che volevi farmi arrivare con il tuo suggerimento o ho capito tutta un'altra cosa?
D
Domenicobrz (1470 points)
2 9 19
by (1.5k points)
Assumi di iniziare da (0,0) e controlla quanti pixel verso destra sono dello stesso colore. Arriverai ad esempio alla coordinata (10,0) prima di trovare un pixel divergente. Segui lo stesso procedimento, questa volta verso "il basso" e fermati al primo pixel di colore differente. Arriverai ad esempio alla coordinata (0, 8). Il massimo quadrato potenziale è quindi (8,8). Una volta controllati tutti i pixel del quadrato potenziale, se sono tutti dello stesso colore hai confermato che quel quadrato va bene.

Quando analizzerai un altro pixel, esempio di coordinate (15, 25)  se il suo quadrato potenziale è di soli 7x7 pixel puoi scartarlo perchè hai già trovato un quadrato massimale di 8x8

Non è l'algoritmo più efficiente ma dovrebbe bastare a coprire i test del grader
Gianluigi (1420 points)
7 17 30
by (1.4k points)
Grazie a tutti per l'aiuto