Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

[HW8-rec] logica suddivisione terreni

L
Lorenzo Scalera (2760 points)
4 8 12
in HW8 by (2.8k points)
Sto attualmente svolgendo l'hw8 di recupero. Ho letto il testo dell.hw, ma non riesco a trovare una logica sulla possibile suddivisione dei terreni e quando potenzialmente un affittuario o Lida stessa, decida di dividere il suo terreno in 4 parti.

Qualunque tipo di suggerimento e' ben accetto.

Grazie a tutti!

3 Answers

L
Larenzz03 (5990 points)
3 14 65
by (6.0k points)
In effetti non viene fornita alcuna informazione specifica su quando o perché una persona possa decidere di dividere il proprio terreno. Leggendo la consegna quel che ho capito è questo: una possibile logica potrebbe essere quella di dividere il terreno solo quando c'è una richiesta da parte di qualcuno interessato ad affittarlo. In questo modo, ogni proprietario potrebbe suddividere il terreno solo quando c'è una richiesta effettiva e non dovrebbe preoccuparsi di dividere il terreno senza alcun motivo quindi devi sostanzialmete scrivere un programma in grado di contare il numero di proprietà all'interno dell'immagine, indipendentemente dalle motivazioni o dalle decisioni che hanno portato alla suddivisione del terreno.

E dato che ogni proprietario può decidere se suddividere il proprio terreno o meno, indipendentemente dalle decisioni prese dagli altri proprietari. Il tuo programma dovrà essere in grado di gestire questa indipendenza delle decisioni, ovvero dovrà essere in grado di contare correttamente il numero di proprietà anche se alcuni proprietari decidono di suddividere il loro terreno mentre altri no.

Potresti gestire questa indipendenza delle decisioni utilizzando una funzione ricorsiva, l'idea è quella di creare una funzione che, data appunto l'immagine fornita, verifichi se ci sono linee di demarcazione all'interno dell'immagine. Se non ci sono, la funzione restituisce 1, poiché significa che c'è una sola proprietà (quella rappresentata dall'immagine). Se invece ci sono linee di demarcazione, significa che l'immagine rappresenta più di una proprietà e devi contare quante proprietà ci sono in totale. Per farlo, puoi suddividere l'immagine in quattro sottosezioni, utilizzando le linee di demarcazione come confine, e chiamare ricorsivamente la funzione su ciascuna di queste sottosezioni. In questo modo, puoi continuare a scendere nella struttura gerarchica dell'immagine fino a raggiungere le proprietà più piccole.

Secondo me in questo modo il programma dovrebbe essere in grado di contare nel modo giusto il numero di proprietà indipendentemente dalle decisioni individuali prese dai vari proprietari.

umh umh devo leggerlo meglio ora mi verrebbe solo in mente di farlo così

inizializzo un count

Inizializzo la lista dei colori di output con il colore del background dell'immagine

Controllo se ci sono linee di demarcazione nell'immagine

Se ci sono linee, suddivido l'immagine in quattro sottosezioni

Per ogni sottosezione, chiamo ricorsivamente la funzione

Aggiorno il count

Aggiungo i colori di output della sottosezione alla lista

se non ci sono linee, significa che c'è una sola proprietà

aggiorno il count

faccio return

poi in un altra funzione credo proprio ex1 di richiamare la funzione ricorsiva per contare il numero di proprietà e costruire la lista dei colori per l'output

ma in effetti in base a cosa sto dividendo il terreno? umh ci penso e nel caso edito
L
Lorenzo Scalera (2760 points)
4 8 12
by (2.8k points)
ti ringrazio per l'analisi approfondita che mi hai suggerito ho capito piu' o meno quello che intendi e ti ringrazio anche per suggerimenti futuri.
M
Martina Leggiero (980 points)
2 19 22
by (980 points)
Scusami e come divideresti e salveresti le 4 suddivisioni?
ChavezRalph (450 points)
0 2 5
by (450 points)
Ciao!

Dovresti scrivere un programma che riceve come input un input_file che sarebbero i file “name.in.png” che hai sulla cartella puzzles. In base alla loro struttura devi creare un algoritmo capace di riconoscere quanti rettangoli esistono e se esistono tali suddivisioni. Dato che questo homework gioca molto con i colori ci sono delle regole specifiche che ti sono state fornite.

1: Non esistera mai un colore di demarcazione uguale al colore del background

2: Se uno dovesse suddividire la propria proprieta sara tracciata una linea di suddivisione sia per orizzontale che verticale dello stesso colore.

3: Ci dovra essere sicuramente un caso base che deve controllare se abbiamo raggiunto un rettangolo che non potra mai piu essere suddiviso

Cio che ti consiglio è di analizzare tale imput_file e verificare se esiste un pixel diverso dal background, se si dovrai vedere se si tratta di una suddivisione dell immagine (che avra sicuramente lunghezza e larghezza pari all immagine) o è una linea che si trova piu in profondita.

Fai attenzione che il modo di salvare questi colori in una lista funziona diversamente. Il primo che è stato visitato dovra essere l ultimo elemento della tua lista di colori.
rinverardigalli (1630 points)
4 8 17
by (1.6k points)
C'è una formula che puoi utilizzare per calcolare, in maniera ricorsiva, la quantità di lotti che sono presenti nell'immagine, a partire dalla quantità di linee di ogni colore. Se riesci ad accoppiare il colore al livello di suddivisione che esso rappresenta, allora potrai capire quanti lotti ci sono in base a quante linee di demarcazione trovi di quel colore. Siccome l'ultimo colore è l'unico con il quale puoi stabilire immediatamente quanti lotti ci sono, quello è il caso base della tua funzione ricorsiva. Esempio:

se il tuo file ha al suo interno 7 colori diversi, vuol dire che i livelli di suddivisione sono precisamente 6 (il colore del background + altri 6 colori). Una volta trovato il colore che corrisponde all'ultimo livello di suddivisione, in base a quante linee ci sono di quel colore, sai quanti lotti sono stati divisi da quel colore, e sei sicuro che non ci sono state altre suddivisioni.

Se un lotto è stato diviso tre volte, e ci sono solamente due linee del colore dell'ultima divisione, e due linee per la seconda divisione, allora il numero dei lotti totali è facilmente calcolabile
G
GabrieleM (150 points)
0 1 3
by (150 points)
Una volta trovati i colori e la loro profondità in che modo posso tenere conto della loro posizione nei rettangoli per ordinarli nella gerarchia?
A
Alessio_tinaburri (510 points)
4 15 19
by (510 points)
Potresti spiegare meglio per favore?
A
Alessio_tinaburri (510 points)
4 15 19
by (510 points)
non capisco quando dici: "Una volta trovato il colore che corrisponde all'ultimo livello di suddivisione, in base a quante linee ci sono di quel colore, sai quanti lotti sono stati divisi da quel colore, e sei sicuro che non ci sono state altre suddivisioni". Come trovo l'ultimo livello di suddivisione, e come calcolo le linee con lo stesso colore?