Page 1 of 1

Algoritm

Posted: 15 Sep 2011, 10:14
by Sophia
As avea nevoie de cateva idei cum as putea face urmatorul lucru:

Am un grid, in care prima coloana contine checkboxuri, dintre urmatoarele coloane una singura este importanta => "Data Scadenza". Utilizatorul, dupa ce a selectat randurile de care are nevoie urmeaza sa faca o oarecare operatie asupra datelor (alegand operatia respectiva din meniu). Inainte insa de a efectua operatia, programul tre sa verifice ca nu au fost selectate mai mult de 4 "Daca Scadenza" diferite. Ceva idei cum as putea implementa cat mai optim acest lucru?

Orice solutie/idee este binevenita. Merci anticipat.

Re: Algoritm

Posted: 15 Sep 2011, 10:46
by Sophia
nu stiu daca va mai avea nevoie cineva de acest algoritm, dar totusi scriu aici solutia care am gasit-o:

if (selectedRows.length > 4) {
selectedRows.sort();
var nrScadenzeDiverse = 0;
var temp = selectedRows[0];
for(var i = 1; i < selectedRows.length - 1; i++){
if (temp !== selectedRows.dataScadenza) {
nrScadenzeDiverse += 1;
temp = selectedRows;
}
if (nrScadenzeDiverse > 4){
this.displayAlert(ml.msg_effetti_piudi_quatro_scadenze_diverse);
return;
}
}
}
Unde selectedRows este un obiect care contine randurile selectate.
Desi am gasit solutia asta, sunt deschisa sa aflu si alte solutii. Astept sugestii.

O zi buna tuturor.

Re: Algoritm

Posted: 15 Sep 2011, 15:33
by tudor_t
Sophia wrote:...
var temp = selectedRows[0];
for(var i = 1; i < selectedRows.length - 1; i++){
if (temp !== selectedRows.dataScadenza) {
...
Ai verificat daca totusi compileaza codul de mai sus?
Pe ghicite limbajul e C# si acolo compari mere cu pere..

Re: Algoritm

Posted: 15 Sep 2011, 17:33
by bu7ch3r
Am vazut si eu asta dar am considerat temp ca temp.dataScadenza si !== ca != ;) Ma gandesc ca metoda sort() e inutila. e de ajuns sa il compari pe primul cu toate pana ai 4 diferente si sa nu mai faci switch intre temp si o variabila diferita. In cazul in care e ok ce am zis, am urmatoarea intrebare : Crezi ca daca sortezi vectorul si eviti parcurgerea lui in intregime ai optimizat ceva?
Eu zic ca nu:
Sortarea ta are poate complexitate O( n(log n) ) asta in cazul in care nu e bogusSort sau mai stiu eu ce si atunci ai O( nxn ) pe cand o parcurgere are O (n). Optimizarea in cazul asta e sa faci skip la functie cand ai mai mult de 4 diferente.

Offtopic: Imi aduce aminte de problema aia: Intr-un vector nesortat exista cifre care se repeta de un numar par de ori si numai o cifra care se repeta de un numar impar de ori. Scrieti un algoritm care sa afiseze acel numar ?

Rezolvarea cu sortatul inainte de parcurgere nu e chiar cea mai ok ;)