aboutsummaryrefslogtreecommitdiff
path: root/challenge-235/deadmarshal/pascal/ch2.pas
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-235/deadmarshal/pascal/ch2.pas')
-rw-r--r--challenge-235/deadmarshal/pascal/ch2.pas53
1 files changed, 53 insertions, 0 deletions
diff --git a/challenge-235/deadmarshal/pascal/ch2.pas b/challenge-235/deadmarshal/pascal/ch2.pas
new file mode 100644
index 0000000000..7196dfd07e
--- /dev/null
+++ b/challenge-235/deadmarshal/pascal/ch2.pas
@@ -0,0 +1,53 @@
+program Ch2;
+
+{$mode objfpc}
+uses
+ SysUtils,Types;
+
+var
+ A1,A2,A3,Ret1,Ret2,Ret3:TIntegerDynArray;
+
+function DuplicateZeros(var Arr:TIntegerDynArray):TIntegerDynArray;
+var
+ I,J:Integer;
+begin
+ SetLength(Result,Length(Arr));
+ I := 0; J := 0;
+ while J <= High(Arr) do
+ begin
+ if Arr[I] = 0 then
+ begin
+ Result[J] := 0;
+ Inc(J);
+ Result[J] := 0;
+ Inc(I);
+ Inc(J);
+ end
+ else
+ begin
+ Result[J] := Arr[I];
+ Inc(I);
+ Inc(J);
+ end;
+ end;
+end;
+
+procedure PrintArray(var Arr:TIntegerDynArray);
+var I:Integer;
+begin
+ for I := Low(Arr) to High(Arr) do Write(Arr[I], ' ');
+ WriteLn;
+end;
+
+begin
+ A1 := [1,0,2,3,0,4,5,0];
+ A2 := [1,2,3];
+ A3 := [0,3,0,4,5];
+ Ret1 := DuplicateZeros(A1);
+ Ret2 := DuplicateZeros(A2);
+ Ret3 := DuplicateZeros(A3);
+ PrintArray(Ret1);
+ PrintArray(Ret2);
+ PrintArray(Ret3);
+end.
+