aboutsummaryrefslogtreecommitdiff
path: root/challenge-197/deadmarshal/modula-3
diff options
context:
space:
mode:
authordeadmarshal <adeadmarshal@gmail.com>2022-12-28 10:47:13 +0330
committerdeadmarshal <adeadmarshal@gmail.com>2022-12-28 10:47:13 +0330
commit977802cd25bb919bbc0bad828d014a68fc7bab17 (patch)
treef997db1a859bf124b7ab22248a0c4a4974d610a7 /challenge-197/deadmarshal/modula-3
parent9720dd7a3a5d6c22d6cc034c363d1d09e309e745 (diff)
downloadperlweeklychallenge-club-977802cd25bb919bbc0bad828d014a68fc7bab17.tar.gz
perlweeklychallenge-club-977802cd25bb919bbc0bad828d014a68fc7bab17.tar.bz2
perlweeklychallenge-club-977802cd25bb919bbc0bad828d014a68fc7bab17.zip
TWC197
Diffstat (limited to 'challenge-197/deadmarshal/modula-3')
-rw-r--r--challenge-197/deadmarshal/modula-3/ch1/src/Ch1.m335
-rw-r--r--challenge-197/deadmarshal/modula-3/ch1/src/m3makefile3
-rw-r--r--challenge-197/deadmarshal/modula-3/ch2/src/Ch2.m337
-rw-r--r--challenge-197/deadmarshal/modula-3/ch2/src/m3makefile3
4 files changed, 78 insertions, 0 deletions
diff --git a/challenge-197/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-197/deadmarshal/modula-3/ch1/src/Ch1.m3
new file mode 100644
index 0000000000..742f0d18b9
--- /dev/null
+++ b/challenge-197/deadmarshal/modula-3/ch1/src/Ch1.m3
@@ -0,0 +1,35 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT IO;
+
+VAR
+ A1:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{1,0,3,0,0,5};
+ A2:ARRAY[0..2] OF INTEGER := ARRAY OF INTEGER{1,6,4};
+ A3:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{0,1,0,2,0};
+
+PROCEDURE PrintArray(VAR Arr:ARRAY OF INTEGER) =
+ BEGIN
+ FOR I := FIRST(Arr) TO LAST(Arr) DO
+ IO.PutInt(Arr[I]); IO.PutChar(' ');
+ END;
+ IO.Put("\n");
+ END PrintArray;
+
+PROCEDURE MoveZeros(VAR Arr:ARRAY OF INTEGER) =
+ VAR Count:INTEGER := 0;
+ BEGIN
+ FOR I := FIRST(Arr) TO LAST(Arr) DO
+ IF Arr[I] # 0 THEN Arr[Count] := Arr[I]; INC(Count) END;
+ END;
+ WHILE Count < NUMBER(Arr) DO Arr[Count] := 0; INC(Count) END;
+ END MoveZeros;
+
+BEGIN
+ MoveZeros(A1);
+ MoveZeros(A2);
+ MoveZeros(A3);
+ PrintArray(A1);
+ PrintArray(A2);
+ PrintArray(A3);
+END Ch1.
+
diff --git a/challenge-197/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-197/deadmarshal/modula-3/ch1/src/m3makefile
new file mode 100644
index 0000000000..8a6bc1e4f8
--- /dev/null
+++ b/challenge-197/deadmarshal/modula-3/ch1/src/m3makefile
@@ -0,0 +1,3 @@
+import("libm3")
+implementation("Ch1")
+program("ch1")
diff --git a/challenge-197/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-197/deadmarshal/modula-3/ch2/src/Ch2.m3
new file mode 100644
index 0000000000..3e6c775055
--- /dev/null
+++ b/challenge-197/deadmarshal/modula-3/ch2/src/Ch2.m3
@@ -0,0 +1,37 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT IO;
+
+VAR
+ A1:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{1,5,1,1,6,4};
+ A2:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{1,3,2,2,3,1};
+
+PROCEDURE Swap(VAR A,B:INTEGER) =
+ VAR Temp:INTEGER := A;
+ BEGIN
+ A := B;
+ B := Temp;
+ END Swap;
+
+PROCEDURE PrintArray(VAR Arr:ARRAY OF INTEGER) =
+ BEGIN
+ FOR I := FIRST(Arr) TO LAST(Arr) DO
+ IO.PutInt(Arr[I]); IO.PutChar(' ');
+ END;
+ IO.Put("\n");
+ END PrintArray;
+
+PROCEDURE WiggleSort(VAR Arr:ARRAY OF INTEGER) =
+ BEGIN
+ FOR I := FIRST(Arr) TO LAST(Arr)-1 DO
+ IF((I MOD 2 = 0) = (Arr[I] > Arr[I+1])) THEN Swap(Arr[I],Arr[I+1]); END;
+ END;
+ END WiggleSort;
+
+BEGIN
+ WiggleSort(A1);
+ WiggleSort(A2);
+ PrintArray(A1);
+ PrintArray(A2);
+END Ch2.
+
diff --git a/challenge-197/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-197/deadmarshal/modula-3/ch2/src/m3makefile
new file mode 100644
index 0000000000..4bfbb7373d
--- /dev/null
+++ b/challenge-197/deadmarshal/modula-3/ch2/src/m3makefile
@@ -0,0 +1,3 @@
+import("libm3")
+implementation("Ch2")
+program("ch2")