SAIL - Remove

Wszelkie pytania na temat SAIL'a i modowania OW.
Post Reply
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

SAIL - Remove

Post by Serpent »

Napisałem taką oto funkcję której zadaniem jest usuwanie podanej wartości z tablicy jedno- lub dwuwymiarowej.

Code: Select all

Export Function Remove(tab, value, mode);
var i, j, tmp;
begin
i := 1;

     while(i <= tab) do
       begin
       if not tab[i] then
          break;

       if value in tab then
          begin
          if not mode then
             tab := tab diff value
              else
               for j = 1 to tab do
                   if tab[j] = value then
                      begin
                      tab := Delete(tab, j);
                      break;
                      end;

          i := i - 1;

          if mode then
             break;
          end
           else
            if tab[i] and value in tab[i] then
               begin
               if not mode then
                  tmp := tab[i] diff value
                   else
                    for j = 1 to tab[i] do
                        if value = tab[i][j] then
                           begin
                           tmp := Delete(tab[i], j);
                           break;
                           end;

               if tmp = [] then
                  begin
                  tab := Delete(tab, i);
                  end
                   else
                    tab := Replace(tab, i, tmp);

               i := i - 1;

               if mode then
                  break;
               end;

       i := i + 1;
       end;

result := tab;
End;
Remove(tab, value, mode);
- tab -> tablica z jakimiś wartościami
- value -> wartość
- mode -> tryb, jeżeli ustawimy na true wówczas zostanie usunięta tylko pierwszy znaleziony element w tablicy równy podanej wartości, jeśli false wówczas wszystkie elementy równe podanej wartości zostaną usunięte
Przykład użycia:

Code: Select all

Every 1 do
var tab;
begin
tab := [[3, 4], [4, 5], [3, 3, 3]];
tab := Remove(tab, 3, false);
display_strings := tab;
End;

// Zwróci [4, [4,5]] ponieważ wszystkie trójki zostaną skasowane
Last edited by Serpent on Thu Dec 15, 2016 2:34 am, edited 2 times in total.
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: SAIL - Remove

Post by Serpent »

Żeby usunąć kilka wartości:

Code: Select all

Export Function RemoveAll(tab, values);
var i;
begin
for i = 1 to values do
    tab := Remove(tab, values[i], false);
result := tab;
End;
Przykład:

Code: Select all

tab := [[1,2,3], [3,2,9]];
tab := RemoveAll(tab, [1,2]);
Zwróci [3, [3,9]].
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: SAIL - Remove

Post by Serpent »

W pierwszym poście wkleiłem poprawioną funkcję. Proszę o aktualizację posta w MA ;p

//Done - zoNE
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
Post Reply