diff options
| author | deadmarshal <adeadmarshal@gmail.com> | 2022-12-28 10:47:13 +0330 |
|---|---|---|
| committer | deadmarshal <adeadmarshal@gmail.com> | 2022-12-28 10:47:13 +0330 |
| commit | 977802cd25bb919bbc0bad828d014a68fc7bab17 (patch) | |
| tree | f997db1a859bf124b7ab22248a0c4a4974d610a7 /challenge-197/deadmarshal/modula-3 | |
| parent | 9720dd7a3a5d6c22d6cc034c363d1d09e309e745 (diff) | |
| download | perlweeklychallenge-club-977802cd25bb919bbc0bad828d014a68fc7bab17.tar.gz perlweeklychallenge-club-977802cd25bb919bbc0bad828d014a68fc7bab17.tar.bz2 perlweeklychallenge-club-977802cd25bb919bbc0bad828d014a68fc7bab17.zip | |
TWC197
Diffstat (limited to 'challenge-197/deadmarshal/modula-3')
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") |
