aboutsummaryrefslogtreecommitdiff
path: root/challenge-333/deadmarshal/modula-3/Ch2/src
diff options
context:
space:
mode:
authorAli <adeadmarshal@gmail.com>2025-08-04 11:20:25 +0330
committerAli <adeadmarshal@gmail.com>2025-08-04 11:20:25 +0330
commitb830fb716a3819d5494d850f4fbec45ac3c49ddf (patch)
treee9f4c893b37f255ad2c4d8b7221852af93485dc8 /challenge-333/deadmarshal/modula-3/Ch2/src
parentce2f933a023e15e5dac73508e56a9aec0e87fae6 (diff)
downloadperlweeklychallenge-club-b830fb716a3819d5494d850f4fbec45ac3c49ddf.tar.gz
perlweeklychallenge-club-b830fb716a3819d5494d850f4fbec45ac3c49ddf.tar.bz2
perlweeklychallenge-club-b830fb716a3819d5494d850f4fbec45ac3c49ddf.zip
TWC333
Diffstat (limited to 'challenge-333/deadmarshal/modula-3/Ch2/src')
-rw-r--r--challenge-333/deadmarshal/modula-3/Ch2/src/Ch2.m357
-rw-r--r--challenge-333/deadmarshal/modula-3/Ch2/src/m3makefile4
2 files changed, 61 insertions, 0 deletions
diff --git a/challenge-333/deadmarshal/modula-3/Ch2/src/Ch2.m3 b/challenge-333/deadmarshal/modula-3/Ch2/src/Ch2.m3
new file mode 100644
index 0000000000..530a1d4cb3
--- /dev/null
+++ b/challenge-333/deadmarshal/modula-3/Ch2/src/Ch2.m3
@@ -0,0 +1,57 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT SIO;
+
+VAR
+ A1 := ARRAY[0..7] OF INTEGER{1,0,2,3,0,4,5,0};
+ A2 := ARRAY[0..2] OF INTEGER{1,2,3};
+ A3 := ARRAY[0..3] OF INTEGER{1,2,3,0};
+ A4 := ARRAY[0..3] OF INTEGER{0,0,1,2};
+ A5 := ARRAY[0..4] OF INTEGER{1,2,0,3,4};
+
+PROCEDURE DuplicateZeros(VAR A:ARRAY OF INTEGER) =
+ VAR
+ N := NUMBER(A);
+ I := -1;
+ K := 0;
+ J := N-1;
+ BEGIN
+ WHILE K < N DO
+ INC(I);
+ IF A[I] > 0 THEN INC(K) ELSE INC(K,2) END
+ END;
+ IF K = N+1 THEN
+ A[J] := 0;
+ DEC(J);
+ DEC(I)
+ END;
+ WHILE J >= FIRST(A) DO
+ A[J] := A[I];
+ IF A[I] = 0 THEN DEC(J); A[J] := A[I] END;
+ DEC(I);
+ DEC(J)
+ END;
+ END DuplicateZeros;
+
+PROCEDURE PrintArray(VAR A:ARRAY OF INTEGER) =
+ BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO
+ SIO.PutInt(A[I]);
+ SIO.PutChar(' ')
+ END;
+ SIO.Nl()
+ END PrintArray;
+
+BEGIN
+ DuplicateZeros(A1);
+ DuplicateZeros(A2);
+ DuplicateZeros(A3);
+ DuplicateZeros(A4);
+ DuplicateZeros(A5);
+ PrintArray(A1);
+ PrintArray(A2);
+ PrintArray(A3);
+ PrintArray(A4);
+ PrintArray(A5);
+END Ch2.
+
diff --git a/challenge-333/deadmarshal/modula-3/Ch2/src/m3makefile b/challenge-333/deadmarshal/modula-3/Ch2/src/m3makefile
new file mode 100644
index 0000000000..78802242fe
--- /dev/null
+++ b/challenge-333/deadmarshal/modula-3/Ch2/src/m3makefile
@@ -0,0 +1,4 @@
+import("libm3")
+import("libsio")
+implementation("Ch2")
+program("Ch2")