Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Algoritmi e strutture dati
Pages: [1] 2 
[Progetto] Samegame
Clicca QUI per vedere il messaggio nel forum
Bloom
Eccolo! che ne dite?
Non misembra proprio difficilissimo.
Devo ancora capire come trattare le biglie

DarkSchneider
io lo sto leggendo, ma ho ancora le idee un po' confuse ....

Bloom
Io pensavo per le caselle e i colori dei grafi.
Tu che pensi?

DarkSchneider
anch'io pensavo a dei grafi in effetti, anche se sinceramente vedo ancora molta nebbia su alcune parti del progetto..

devo ancora dargli una letta più approfondita...

senti.. che ne diresti di usare questo thread per darci del supporto..

io credo che ne avrò bisogno.. e poi se ci si da delle dritte credo che si fa prima a uscirne fuori :D

Bloom
Non ci capisco molto sulle componenti connesse.
Nel primo esempio dice che c'è un unica componente connssa!Perche?

Bloom
come no!!Ma mi sa che personalmente avremo bisogno di altro supporto....

Bloom
qualcuno mi potrebbe spiegare la differenza tra blocco e componente??
i componenti sono le biglie?

tata1283
Ciao!
Anche io devo svolgere il progetto!
Ultima chiamata per la laurea....speriamo!!

Un blocco è formato da biglie dello stesso colore adiacenti tra loro.
Mentre una componente è formata dale biglie adiacenti senza stare a guardare i vari colori delle stesse.

Più o meno è comprensibile come cosa?

Quindi voi pensate a due grafi distinti per colori e coordinate?
Io pensavo quasi agli insiemi disgiunti......boh!!!

Bloom
Ma che cosa mi serve una componente?
Dal testo:
componente (x, y):
Se (x, y) non contiene alcuna biglia allora non esegue alcuna operazione. Altrimenti, visualizza la
componente contenente la casella (x, y) secondo il formato specificato nell’apposita sezione.
Cosi sembra che una componente sia una singola biglia....
Un grafo per le caselle e uno per le biglie non puo andare bene?

tata1283
no la componente è l'insieme di biglie a mano a mano adiacenti tra loro a partire da quella in (x, y) senza stare a guardare i colori che hanno.
Prova a guardare l'esempio, ti chiarisce molto le cose.

Tu dici, un grafo per le caselle e uno per le biglie.....ma caselle e ciglie non potrebbero essere la stessa cosa?
Cioè una casella ha x e y e volendo anche un colore e una biglia ha x e y e un colore no?
O tu intendi per casella solo le coordinate e per biglie solo i colori?

Bloom
Sul file c'è scritto che all'inizio il piano è vuoto e l'ho interpretato che non ci sono biglie.
Le biglie sono i colori.



Ma quando ti chiede di contare il numero di componenti?cosa devo contare?

tata1283
Certo all'inizio il piano è vuoto.....e se è vuoto non hai neanche delle caselle giusto?
Visto che le caselle saltano fuori nel momento in cui crei le biglie.
O sbaglio?

Devi contare in base alle caselle che hai nel piano e alle varie caselle adiacenti quante componenti hai.
Quindi se tu metti parti dalla cella più in basso a sinistra e via via passi per tutte le sue adiacenti se finito qst percorso hai altre celle non visitate allora oltre a qst componente ne avrai altre per sapere quante fai lo stesso percorso con le caselle che ti sono rimaste libera dal percorso precedente.....
Insomma se guardi l'esempio mi sembra chiara come cosa così a parole è piuttosto complicata da spiegare.

Bloom
boh...
secondo me quando dice che all'inizio il piano è vuoto vuol dire che le caselle sono vuote,almeno secondo me.
Prima mi creo la casella e poi se è necessario ci inserisco una biglia.

Ora guardo meglio il progetto,ma la storia delle componenti continua a non essermi chiara sopratutto perche l'esempio si riferisce alla funzione mossa e non a concetto di componenti...
Comunque è gia qualcosa che abbia capito che fare piu o meno :-)
Per lo meno ho buttato giu qualcosa

tata1283
Ciao!
Allora voi pensate a due grafi come strutture dati?

Bloom
Io si......ma non sono certa....ora sto litigando con il il conteggio delle caselle colorate.....
Voi a che punto siete?

tata1283
conteggio delle caselle colorate in che senso?

Bloom
C'è una funzione Del tipo NumeroComponenti che vuole sapere quante biglie ci sono nel piano (se i componenti sono le biglie).
Poi ci sono LE componenti che ancora non ho capito che sono o sono la stessa cosa?

tata1283
I componenti non sono le biglie.
Quella funzione non ti chiede il numero delle biglie.
Ti chiede l'insieme delle biglie quante componenti compone sul piano in base alla loro posizione e alle loro adiacenze?

Guarda l'esempio del programma sul testo del progetto.
La prima volta che chiama quella funzione che risultato da?
Da 2.
Ti sembra che ci siano 2 biglie sul piano? No ce ne saranno una trentina.
Quindi vedi che le componenti non sono le singole biglie ma insiemi di biglie.

Bloom
ok grazie

Bravo Yankee
Non mi è chiaro come fare per passare al programma il file in cui ci sono i descrittivi delle azioni da svolgere...voi lo passate da riga di comando quando lanciate in esecuzione il file o fate in qualche altro modo?

Bloom
Si fa tutto da riga di comando.

davene
da riga di comando...attraverso la redirezione dell'input / output.
se vai sul sito di fiorentini ci sono parecchi esempi.
Saluti

Bravo Yankee
Avete poi trovato che struttura dati utilizzare?

DarkSchneider
Originally posted by Bravo Yankee
Avete poi trovato che struttura dati utilizzare?


mi hai tolto le parole di boccA :D

anch'io sono un po' indeciso soprattutto per quanto riguarda cosa usare per i colori ..

Toras
Secondo me è molto simile al progetto che avevo svolto io ^^

Trovate qui il mio codice..cmq un albero RB e un grafo mi sembrano la soluzione migliore ^^

Bloom
Io ho utilizzato 2 grafi una per i colori e l'altra per le caselle.
Piu una struttura si supporto che sistituisce l'albero di ricerca rb.
Usare un rb per le caselle è impegnativo perche bisogna fare laricerca con 2 chiavi.

Bloom
Ragazzi mi manca solo di fare la funzione mossa!!!!
Ma come si fa?
Trovo la cella con la biglia,
guardo il colore e cancello il blocco corrispondente e poi?
Mica ho capito come si spostano le biglie!!
E poi meglio cancellare le celle dei blocchi o cancello solo le biglie?
Che ne dite?

Bloom
Ho bisogno veramente di una mano, riesco acancellare tutto il blocco,
ma non riesco a cancellarne sono una parte.(mi riferisco amossa
)

tata1283
Originally posted by Bloom
Ho bisogno veramente di una mano, riesco acancellare tutto il blocco,
ma non riesco a cancellarne sono una parte.(mi riferisco amossa
)


Dipende molto da come hai implementato il blocco.
Devi fare il controllo delle coordinate delle caselle all'interno del blocco per vedere se fanno parte della zona di mossa o meno.

GiaXVI
curiosità, che tipo di grafi avete usato come struttura?

Bloom
Ti ringrazio,
Io ho utilizzato grafi con liste di adiacenza

Bloom
Mi ero dimenticata di chiedere,mi conviene individuare il sottografo e poi vedere se li c'è il blocco?

Garet
Originally posted by Toras
Secondo me è molto simile al progetto che avevo svolto io ^^

Trovate qui il mio codice..cmq un albero RB e un grafo mi sembrano la soluzione migliore ^^


L'albero RB lo useresti per i colori e il grafo per le celle e relative liste di adiacenza?

bullet
Ciao a tutti ...
anche io devo fare il progetto...
Ho visto ke avete proposto due grafi , uno per le caselle e uno per i colori.
Non capisco come mai separate le due cose.

ciao ciao

imperator
sarò ignorante...ma se implementi un albero rb non è semplice effettuare le operazioni di ricerca, poichè come chiave dovresti usare una coppia di numeri, le coordinate x e y.

ci sto provando ma fino adesso non mi è venuto in mente nulla di buono

Bloom
Io sono riuscita a fare albero rb con 2 chiavi di ricerca ma è un macello
ci sono tanti controlli da fare.
Per questo ho scelto due grafi.
Cmq rb servirebbe per le celle.
2grafi servono per trovare le adiacenze dei colori ad esempio per trovare il blocco.
a me manca solo mossa.
Qualcuno ha un 'idea?
Io sto diventando matta perche non riesco a fargli capire che deve considerare solo le celle all'interno del range.....Ho provato di tutto.
Quindi domani vado dal profe e speriamo bene

tata1283
ciao!
Volevo chiedere un aiutino.

Sto costruendo un albero arrivo ad avere
radice, figliodx, figliosx del figliodx, figliodx del figliodx,
Quindi tre livelli costruiti in maniera corretta.

Ora mi costruisco un nuovo nodo a parte che poi andrò ad inserire nell'albero.
Nel momento in cui io costruisco qst nodo l'ultimo nodo che io ho inserito nell'albero mi si pone tutto a null all'interno dell'albero facendomi poi sbagliare l'inserimento del nuovo nodo.

Sottolineo che la costruzione del nodo è un operazione a parte che non va a toccare in nessun modo l'albero fin qui creato.

Perchè mi succede questa cosa?????
Sto impazzendo!

valterlimo
non lo so cosi non è facile capire...domanda stupida:
hai provato a debuggare riempiendo di printf in qualsiasi procedura ?

tata1283
si ho messo un sacco di printf ed è proprio grazie a quelle ho scoperto che il problema è quello che ho spiegato sopra.

valterlimo
ma se copi il pezzettino incriminato, forse qualcuno ti può aiutare piu facilmente(io so all'incirca il "minimo sindacale"..)

Bloom
Ciaoooooooo a tutti,sono finalmente riuscita a cancellare un blocco all'interno di un range di caselle....ma come si fanno spostare ?
Avete in mente un algoritmo in particolare??

imperator
ho un problema...
facendo le prove con l'input fornito dal prof mi risulta che quando eseguo l'istruzione
m -3 -1 -4 120 -1 1 la cella di coordinate -3 -1 mi risulta inesistente, cioè non è stata inserita nell'albero rb che ho usato come struttura dati...
anche a voi per caso (se avete modo di provare a testare questa cosa) vi risulta che la cella/biglia di coordinate -3 -1 è inesistente?
thanks

Bloom
Non esiste la biglia in quella cella,quindi non viene eseguita nessuna mossa

imperator
ok grazie

imperator
scusate ma ho un altro dubbio...
me se io devo far cadere la biglia da una cella x a una cella x-1 e questa non è inserita che faccio?
devo tappare i buchi dell'input del prof inserendo delle celle vuote io?

Bloom
ma parli dell'asse x o y?
Non capisco la tua domanda

El Briffo
Allora, io ho "terminato" il progetto...diciamo così xkè sono riuscito a fare praticamente tutto, solo lo spostatemento delle caselle per stabilizzarle rispetto all'asse y non mi è riuscito del tutto e crea qualche imprecisione nelle fasi finali del test....dite che il prof lo butta via se lo vede così?

voi che tipo di algoritmi avete usato per riassettare le caselle rispetto alla base? io dopo la cancellazione del blocco faccio prima "cadere" le caselle e poi con un algoritmo che conta le colonne vuote riattacco le componenti che si sono eventualmente create...

la fase della mossa è quindi un po' tagliata con l'accetta mentre il funzionamente del resto è (credo) impeccabile.. spero non abbia nulla da ridire voi che dite? :?

tata1283
Ciao!
Non so a qualcuno interessi.
Stamattina ho fatto l'orale.
Si discute il progetto: spiegare strutture dati, spiegare algoritmi e poi vi fa vedere se si potevano fare miglioramenti.
E viene dato il voto.
Poi si fa l'orale tre domande, a me:
quick sort
alberi red black
programmazione dinamica
Fa ragionare molto.
Cmq se siete ammessi al giorno dell'orale l'esame è passato!

Metteus
alla fine quali strutture dati avete utilizzato ?

b.elite
Originally posted by El Briffo
Allora, io ho "terminato" il progetto...diciamo così xkè sono riuscito a fare praticamente tutto, solo lo spostatemento delle caselle per stabilizzarle rispetto all'asse y non mi è riuscito del tutto e crea qualche imprecisione nelle fasi finali del test....dite che il prof lo butta via se lo vede così?

voi che tipo di algoritmi avete usato per riassettare le caselle rispetto alla base? io dopo la cancellazione del blocco faccio prima "cadere" le caselle e poi con un algoritmo che conta le colonne vuote riattacco le componenti che si sono eventualmente create...

la fase della mossa è quindi un po' tagliata con l'accetta mentre il funzionamente del resto è (credo) impeccabile.. spero non abbia nulla da ridire voi che dite? :?


ma non era il 31 l'orale?

b.elite
Originally posted by tata1283
Ciao!
Non so a qualcuno interessi.
Stamattina ho fatto l'orale.
Si discute il progetto: spiegare strutture dati, spiegare algoritmi e poi vi fa vedere se si potevano fare miglioramenti.
E viene dato il voto.
Poi si fa l'orale tre domande, a me:
quick sort
alberi red black
programmazione dinamica
Fa ragionare molto.
Cmq se siete ammessi al giorno dell'orale l'esame è passato!


ops ho sbagliato a quotare...:-D

la domanda era per te:D

tata1283
una delle date possibili era oggi il 30.
Parlo per Torelli e Aguzzoli.

kalbiz
affronto il 2, per alcune parti simile, escluso rb, pensavo a fare tutto con dei grafi, mi sfugge qualcosa però , qualcuno può aiutarmi?
ho un grafo per le biglie , ho un grafo per le caselle, perchè possono esistere caselle anche senza biglie.
mi serve però adesso avere anche una struttura per il blocco, una lista ? quella dei colori ? visto che elimino il blocco di colore = ?

tata1283
perchè caselle e biglie le dividi?
La biglia non è poi solo un colore?

kalbiz
vero ci avevo pensato ma quando sposto le biglie x-1 o y -n, serve sapere se c'è una casella sotto, sulla quale fare cadere o spostare le biglie ? posso aggregare i due grafi biglie-caselle, ma come scopro poi se esiste una casella ? mi sono perso ...

El Briffo
Originally posted by kalbiz
vero ci avevo pensato ma quando sposto le biglie x-1 o y -n, serve sapere se c'è una casella sotto, sulla quale fare cadere o spostare le biglie ? posso aggregare i due grafi biglie-caselle, ma come scopro poi se esiste una casella ? mi sono perso ...


Vediamo, io ho fatto tutto con un grafo.. per vedere se una casella esiste la cerco nel grafo e vedo se trovo NULL o meno.. di conseguenza faccio cadere ogni casella per il numero delle caselle vuote sotto di sè.
Successivamente faccio la stessa cosa con il numero di colonne vuote. Magari non è il miglior algoritmo creato ma funziona :)

kalbiz
non ci avevo pensato, se non esiste la casella-biglia, sposti fino alle dimensioni della base ? così sai fino a dove farle cadere ?

tata1283
molto semplicemente.....qualsiasi struttura si usa.....se tu cerchi una casella (x, y) se la trovi ha una biglia se non la trovi non ha una biglia.......sempre con il ragionamento di unire caselle e biglie come ti dicevo prima.
Poi se tu vuoi avere caselle e biglie divise......non saprei.

Bloom
secondo me il problema è un altro...
se c'è un buco in y-1 devi spostare tutte le biglie y,y+1...finche ci sono biglie

El Briffo
Originally posted by kalbiz
non ci avevo pensato, se non esiste la casella-biglia, sposti fino alle dimensioni della base ? così sai fino a dove farle cadere ?


in pratica uso i soliti due for innestati per selezionare ogni casella, dopodichè sulla casella incontrata(solo se esiste e appena sotto di sè non c'è nulla) effettuo un altro ciclo for che scorre le caselle che ha sotto e conta gli spazi vuoti fino a quando ritrova un'altra casella o arriva alla base definita. Successivamente creo o modifico la casella nella posizione i, j-spaziVuoti dandogli il colore della casella i,j. A questo punto posso cancellare la casella nelle coordinate i,j.

Detto così è un casino...sicuramente c'era un modo + elegante.. qualcuno ha usato un altro metodo?

Bloom
Cosi però sposti tutte le biglie che sotto di se hanno dei buchi.
Mentre dovresti spostare tutte quelle biglie la cui x corrispondono al blocco che hai cancellato
Non so se mi sono spiegata.

tata1283
Bloom forse non hai capito bene la funzione mossa....
devi spostare tutte le biglie che fanno parte delle coordinate x0, x1, y1, y0.
Il blocco cancellato è la prima parte della funzione e si basa sugli argomenti x, y.
Il resto lo si fa per qualsiasi biglia nella base.
Come ha detto el briffo è un modo per spostare le caselle

El Briffo
Originally posted by Bloom
Cosi però sposti tutte le biglie che sotto di se hanno dei buchi.
Mentre dovresti spostare tutte quelle biglie la cui x corrispondono al blocco che hai cancellato
Non so se mi sono spiegata.


Si vero, infatti il secondo ciclo parte da j = y0+1 ^^

Bloom
si,ma se vai a vedere gli esempi prima cancelli il blocco,
poi in corrispondenza delle x del blocco vai a spostare le biglie sull'asse
y.
Con due cicli for..secondo me vai a spostare tutte le biglie di y-1 posizioni (se la cella sotto è vuota) e non solo in corrispondenza del blocco cancellato.
Ne sono sicura anche perche avevo fatto come te

Bloom
Per elBriffo:
Cosi sposti tutte le biglie di y-1 posizioni che stanno nel range x0 x1 e y0 e y1 e

tata1283
Originally posted by Bloom
si,ma se vai a vedere gli esempi prima cancelli il blocco,
poi in corrispondenza delle x del blocco vai a spostare le biglie sull'asse
y.
Con due cicli for..secondo me vai a spostare tutte le biglie di y-1 posizioni (se la cella sotto è vuota) e non solo in corrispondenza del blocco cancellato.
Ne sono sicura anche perche avevo fatto come te


Boh forse non riesco a capire quello che stai dicendo.
Io so solo che l'esame l'ho passato ieri e come ho fatto la funzione mossa era giusto......magari stiamo dicendo la stessa cosa....

El Briffo
Originally posted by Bloom
si,ma se vai a vedere gli esempi prima cancelli il blocco,
poi in corrispondenza delle x del blocco vai a spostare le biglie sull'asse
y.
Con due cicli for..secondo me vai a spostare tutte le biglie di y-1 posizioni (se la cella sotto è vuota) e non solo in corrispondenza del blocco cancellato.
Ne sono sicura anche perche avevo fatto come te


Ho innestato un terzo ciclo (in cui si entra solo se la casella esiste e sotto di sè c'è un posto vuoto) che conta le caselle vuote sotto, in questo modo scalano in modo corretto.
Tu hai risolto con meno controlli?

Bloom
Per tata:
ad esempio:
(3,2)(4,2)(5,2)
(3,1 )(4,1) (5,1)
è un blocco.
Fai finta che il range è per le x[1, 8] e per le y[1 5].
Il blocco appartiene al range.
quindi si cancella il blocco.
mettiamo ad esempio che ci siano delle biglie (non appartenenti al blocco perchè di colore diverso)in (3,3 )(4,3)(5,3)e (6,3).
Sono d'accordo che bisogna spostare du 2 posizioni le biglie (3,3)(4,3)e (5,3),ma la biglia in (6,3) sebbenbe appartenga al range
non dovrebbe essere spostata giusto?

Bloom
Per elBriffo guarda l'esempio fatto per tata

kalbiz
Originally posted by tata1283
molto semplicemente.....qualsiasi struttura si usa.....se tu cerchi una casella (x, y) se la trovi ha una biglia se non la trovi non ha una biglia.......sempre con il ragionamento di unire caselle e biglie come ti dicevo prima.
Poi se tu vuoi avere caselle e biglie divise......non saprei.


no anzi stavo provando le varie strutture dati, il discorso che fai è coerente e funziona ..oltretutto meglio un grafo che 2 :-)

tata1283
Originally posted by Bloom
Per tata:
ad esempio:
(3,2)(4,2)(5,2)
(3,1 )(4,1) (5,1)
è un blocco.
Fai finta che il range è per le x[1, 8] e per le y[1 5].
Il blocco appartiene al range.
quindi si cancella il blocco.
mettiamo ad esempio che ci siano delle biglie (non appartenenti al blocco perchè di colore diverso)in (3,3 )(4,3)(5,3)e (6,3).
Sono d'accordo che bisogna spostare du 2 posizioni le biglie (3,3)(4,3)e (5,3),ma la biglia in (6,3) sebbenbe appartenga al range
non dovrebbe essere spostata giusto?


Ah ma certamente!
Io avevo capito che tu andavi a spostare solo le biglie nelle caselle sopra al blocco cancellato e le altre non le guardavi minimamente anche se interne alla base.
Quello che dici tu è giusto, nel senso che quelle sopra al blocco diciamo che in un certo modo sai già che devi spostarle mentre tutte le altre devi fare tutti i controlli sotto e a sinistra.
Cmq nel tuo esempio la biglia (6, 3) andrà spostata nel caso sotto di lei ci siano caselle vuote...devi fare cmq i controlli sotto e a sinistra.

Bloom
Io ho capito che la (6,3) andrà spostata a sinistra non in basso per ristabilire la base
o Non ci ho capito nulla?
Ovvero se la casella in posizione (6,2) è vuota gia da prima devo cmq spostarla verso il basso?

tata1283
Originally posted by Bloom
Io ho capito che la (6,3) andrà spostata a sinistra non in basso per ristabilire la base
o Non ci ho capito nulla?
Ovvero se la casella in posizione (6,2) è vuota gia da prima devo cmq spostarla verso il basso?


Mossa funziona così:

Questo è il piano:

(4,3) (5,3) (6,3) (7,3) (10,3)
(4,2) (6,2) (7,2)
(4,1) (5,1) (6,1)

Esegui mossa(4, 1, 1, 10, 1, 10)
(4,1) fa blocco con (5,1) (6,1) (6,2)
dopo mossa il piano sarà questo:

(4,2) (7,2)
(4,1) (5,1) (6,1) (7,1) (8,1)

tata1283
Nel piano risultato non è (7,2) ma (5,2)....sorry!

tata1283
Ritiro quello che ho detto......è tutto giusto....sono solo allineate in modo sbagliato!

Bloom
Ahhh ok...cercavo ancora di capire.
Grazie :-)

Bloom
Allora potresti riscrivermelo perfavore allineato???

tata1283
Mossa funziona così:

Questo è il piano:

(4,3) (5,3) (6,3) (7,3) ...................... (10,3)
(4,2) ....... (6,2) (7,2)
(4,1) (5,1) (6,1)

Esegui mossa(4, 1, 1, 10, 1, 10)
(4,1) fa blocco con (5,1) (6,1) (6,2)
dopo mossa il piano sarà questo:

(4,2) ................ (7,2)
(4,1) (5,1) (6,1) (7,1) (8,1)

Così è più leggibile?

Bloom
Sisi grazie veramente.

b.elite
proprio non riesco a vederci chiaro:?

cioè io utilizzerei una struttura dati che permetta ricerche efficenti per mantenere le bigle, no?

e poi un grafo per i cammini, ma il grafo come lo devo fare???
devo mettere tipo 4 puntatori up,down,right, left???

:?:?:?

tata1283
Originally posted by b.elite
proprio non riesco a vederci chiaro:?

cioè io utilizzerei una struttura dati che permetta ricerche efficenti per mantenere le bigle, no?

e poi un grafo per i cammini, ma il grafo come lo devo fare???
devo mettere tipo 4 puntatori up,down,right, left???

:?:?:?


se vai su algoteam ci sono le implementazioni delle varie strutture dati.

b.elite
grazie tata:-D

qualche consiglio su come gestire i blocchi?

b.elite
cioè non so se conviene tenerli sempre aggiornati in modo da avere una var globale che contiene il numero dei blocchi

oppure

trovare il blocco solo quando si esegue una mossa e fare una funzione che calcola il numero blocchi solo quando occorre

bho

kalbiz
sono bloccato, vediamo se riusciamo ad aiutarci, ho il mio grafo contenente le caselle-biglie, ma il mio blocco non è un struttura nuova corretto? cioè è l'insieme dei nodi del grafo adiacenti con uguale colore... corretto ? quindi se io faccio una funzione che mi mette in relazione tutti questi nodi con la lista delle adiacenze del mio grafo, dovrei aver trovato il blocco di colore x...
farei una funzione a parte per il conteggio dei blocchi rimasti, perchè non credo di poter decrementare una globale visto che poi le biglie si spostano sul piano dopo la cancellazione del blocco ...
spero ...

b.elite
si hai ragione, sarebbe troppo dispendioso aggiornare i blocchi ogni volta che si inserisce una biglia o si esegue una mossa...

la soluzione migliore allora sarebbe data una casella (x,y) trovare l'insieme delle caselli adiacenti dello stesso colore (magari con una visita in ampiezza) e poi metterle dove? in una sturttuura dati temporanea tipo lista o pila?
sto dicendo cazzate???

b.elite
mi spiego meglio:

quando si esegue una mossa bisgna:

travre la casella;
trovare il blocco a cui appartiene la casella;
eliminare il blocco;
stabilizzare la base;

ma una volta trovato il blocco ho cmq bisongo di mantenerlo???
se no non capisco come fare a sapere quali movimenti fare per stabilizzare la base

kalbiz
ummm, io farei, e facile a dirsi sulla carta, creo i nodi e li metto in un grafo, poi se i colori sono gli stessi li giunto...
ma quando eseguo una mossa devo :
-trovare la casella
-specificare una base r x c
-eliminare il blocco compreso nella base
-stabilizzare la base
credo che tu debba mantenere la base base RxC + che il blocco che viene eliminato no ?? magari hai ragione ... ma il blocco lo elimino e sposto solo le biglie comprese nella base ???

b.elite
azz è proprio così le biglie del blocco da eliminare sono solo quelle comprese nella base...

b.elite
ma anche tu stai facendo same game 2?

cmq c'è da dire che le lezioni di laboratorio non ti preparano per un cazzo...
il progetto è tutta un'altra cosa

kalbiz
si sono sulla versione 2 ...
assolutamente d'accordo con te ...

Metteus
anche io sono sulla versione 2, ma sono proprio bloccato... avevo pensato anche io a un grafo rappresentato con liste di adiacenza, ma quando devo inserire una biglia nel posto giusto devo scorrere tutta la lista per trovare il posto giusto e poi controllore le adiacenze,,, cioè secondo me cosi verrebbe un tempo O(N^2).... che solo per inserire una biglia non mi sembre il caso...

poi con questa rappresentazione non c'è un ordine, quindi tutte le ricerche sarebbero troppo dispendiose....

voi in base a cosa ordinate le biglie ?

thx

kalbiz
io ho provato ad ordinare le biglie a secondo delle adiacenze e del colore

Metteus
Originally posted by kalbiz
io ho provato ad ordinare le biglie a secondo delle adiacenze e del colore


cioé?

kalbiz
torno su una question perchè non ho capito come fare ...
elimino il blocco e riposiziono la base da queste coordinate b1 b2 h1 h2

spostare una biglia è semplice ... spostare tutte le biglie che sono nella griglia ... mi sfugge ...
ho due funzioni una ricorsiva ... per fare cadere le bilgie e una per spostare di x-1 se la colonna è libera ...
se punto diretto ad una biglia funziona ... ma come spostare per esempio quella immediatamente sopra ???
con 2 cicli for credo sarebbe troppo dispendioso quando viene caricata come base nell'esempio -3000 500.... o mi sbaglio ?
grazie

tata1283
io avevo usato due cicli for.....non mi è stato evidenziato nessun problema dal prof.

kalbiz
ok perfetto ...provo a farlo con i for ... grazie

b.elite
azz le funzioni sui cammini minimi mi stanno facendo sclerare:wall::wall:

ho visto che suggerite di usare l'algoritmo BFS però sinceramente non l'avevo mai sentito , ho provato a guardarne l'implementazione su algoteam ma non c'ho capito una mazza..

avete qualche suggerimento?

Metteus
Avete qualche idea per cammino variabile ?
forse si puo usare la bfs anche li ?

per non parlare della mossa..... con l'implementazione mediante rb tree è un bel pasticcio...

GiKappa
scusate, ho sbagliato thread

Metteus
come siete messi con sto cax di progetto !!??!?

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate