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.

Discussione sul pattern_diff_

g
giac (2790 points)
10 14 27
in HW8 by (2.8k points)
Ciao ragazzi, volevo avviare uno scambio di idee sulla strategia da usare per il diff, l'unico pattern che mi manca. Io non so bene se pensare in termini di matrici 2x2 da assemblare, oppure pixel a pixel, o in altri modi, con conseguenti controlli sui pixel adiacenti.
664 views
closed

4 Answers

Best answer
l
laertleba (2840 points)
11 28 42
by (2.8k points)
selected by
Ciao, non l'ho ancora implementata pero questa è la mia idea:

Parto da una configurazione iniziale dell'immagine con il dimensione dato, poi lo riempio ricorsivamente con i valori dei colori.

Prima creo la configurazione perchè cosi posso facilmente fare dei confronti. Per ogni posizione controllo se è diverso dalle posizioni nelle matrici 2x2. I confronti saranno pochi ( al massimo 4 ) perchè sto man mano costruendo l'immagine.

Nel caso D >= di 2 allora devo avere almeno 4 colori, altrimenti niente immagini.
g
giac (2790 points)
10 14 27
by (2.8k points)
Scarabocchiando su un foglio, mi era venuta un'idea del genere, l'hai espressa più chiaramente
A
AlessandroBavaro (10660 points)
5 8 24
by (10.7k points)
Ciao Giac io per esempio ho pensato prima a trovare tutte le possibili combinazioni di righe e poi combino tra loro le righe fino ad ottenere un quadrato. Però ti dico che non ho avuto un risultato ottimale ovvero non passo il test 8 che però può dipendere anche da come ho programmato.
g
giac (2790 points)
10 14 27
by (2.8k points)
Ci avevo pensato e credo che il tuo problema sia la creazione di un numero alto di possibili righe che devono poi essere fortemente filtrate. Lo stesso varrebbe per un'altra idea che avevo avuto, cioè l'assemblaggio di sottomatrici 2x2. Mi restano 2 idee (intuitive, ma non so bene come farle, ne se conviene farlo) : creare una matrice 2x2 e poi "orlarla" fino alla dimensione DxD; oppure creare pixel a pixel un unico array, da trasformare poi in matrice.
A
AlessandroBavaro (10660 points)
5 8 24
by (10.7k points)
Devo dire che la costruzione da sotto quadrati ci avevo pensato ma mi sembrava piu difficile, sopratutto nel caso delle dimensioni dispari, per orlare cosa intendi?
g
giac (2790 points)
10 14 27
by (2.8k points)
Intendo fare una 2x2 e poi allargarla con mosse idonee a 3x3, poi 4x4 fino a DxD.

Ma è un'idea non testata, fatta cosi a colpo d'occhio.
Exyss (21510 points)
1 2 79
by (21.5k points)
Entrambe le soluzioni sono valide, ovviamente una delle due é più veloce dell'altra ma anche un po' di più difficile da implementare
Tommaso.Lopedote (1470 points)
5 11 28
by (1.5k points)
avendo la lista dei colori gia' ordinata nella combinazione corretta, puoi dare come argomento della funzione ricorsiva un indice che punta ad un colore della lista, poi ad ogni chiamata ricorsiva basta che incrementi quell'indice. Poi a secondo di come navighi la stanza dovrai resettare tale indice in modo da non farlo andare "out of range" e che ogni pixel possegga un colore differente dagli altri adiacenti. Tutto pero' dipende da come hai pensato l'algoritmo ricorsivo. Questo tipo di implementazioni non fa alcuna verifica ad ogni passo, quindi potrebbe essere molto veloce...