 | |
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 |
[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. |
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 |
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 !!??!? |
|
|
|
|