Numarul de perechi ("npairs") si perechile ("val", "time") se adauga in lista ("list"). Apoi, in functie de argumentele primite in linia de comanda, se apeleaza subprogramul corespunzator, care modifica lista initiala.
-
Se parcurge lista, "p" fiind primul nod din seria de 5 si "mid" fiind cel din mijloc. Pentru fiecare serie se calculeaza media si deviatia cu ajutorul functiilor
average
sideviation
, iar daca valoarea nodului din mijloc nu apartine intervalului, este eliminat si numarul perechilor scade. -
Am creat o noua lista ("new_list") care va contine nodurile din mijloc. Pentru fiecare serie de 5 noduri, am apelat subprogramul
mini_list
, care creeaza o noua lista cu cele 5 noduri, care este apoi sortata (functiasort
). Acest subprogram returneaza un nod care are valoarea si timestamp-ul nodului din mijloc. Ine2
, nodul este adaugat in lista "new_list", care inlocuieste lista initiala si se modifica numarul de perechi. -
Am creat o noua lista ("new_list") care va contine nodurile cerute. Pentru fiecare serie de 5 noduri, am apelat subprogramul
medie
, care returneaza un nod avand ca valoare media dintre cele 5 noduri si timestamp-ul nodului din mijloc. Ine3
, nodul este adaugat in lista "new_list", care inlocuieste lista initiala si se modifica numarul de perechi. -
Lista este parcursa de la al doilea element si pana la ultimul, si se calculeaza diferenta ("dif") dintre nodul curent si cel anterior. Daca diferenta apartine intervalului [100,1000], valoarea si timestamp-ul nodului sunt modificate.
-
Am declarat 6 noduri care corespund listelor right si left. Am calculat constantele w13, w23, w33. Am parcurs lista, calculand diferenta dintre un element si urmatorul, iar daca aceasta este mai mare de 1000, urmeaza o serie de operatii: Se stabilesc left si right si timestamp-ul primului nod de adaugat. In continuare, pentru fiecare nod care va fi adaugat se calculeaza "C"-ul si valoarea ("f"), dupa formulele date. Nodul este adaugat dupa nodul curent prin functia
insertAfter
, numarul de perechi creste si se trece la urmatorul nod. -
Lista este sortata cu functia
sort
. Am declarat 2 variabile: "start" si "end" - capetele primului interval. Se parcurg nodurile din lista, iar daca nodul respectiv se afla in intervalul curent, contorul ("k") creste, in caz contrar, este afisat intervalul si numarul de noduri, iar capetele intervalului cresc cu "delta".