SAIL - ReplaceIn

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 - ReplaceIn

Post by Serpent »

Hi, napisałem funkcję która podmienia wartość w podanym miejscu, w dowolnej tablicy wielowymiarowej.

Code: Select all

// arr - tablica
// pos - tablica pozycji
// value - nowa wartość do wstawienia
Export Function ReplaceIn(arr, pos, value);
var i, tmp, s_arr;
begin
if pos < 1 then
   exit;

if pos = 1 then
   result := Replace(arr, pos[1], value)
    else
     begin      
     tmp := arr;
     s_arr := [tmp];

     for i = 1 to pos-1 do
         begin  
         tmp := tmp[pos[i]];
         s_arr := s_arr ^ [tmp];
         end;

     tmp := Replace(tmp, pos[pos], value);
     s_arr := Replace(s_arr, s_arr, tmp);

     for i = s_arr downto 2 do
         begin
         tmp := Replace(s_arr[i-1], pos[i-1], s_arr[i]);
         s_arr := Replace(s_arr, i-1, tmp);
         end;

     result := s_arr[1];
     end;

End;
Przykład użycia:

Code: Select all

t := [ [1, 2], [ [15, 3], [1, [11, 12]], [3, 4]] ];
t := ReplaceIn(t, [2, 2, 2, 2], 88);
display_strings := t;
Wyświetli [ [1, 2], [ [15, 3], [1, [11, 88]], [3, 4]] ].
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