diff options
| author | Ali <adeadmarshal@gmail.com> | 2025-08-04 11:20:25 +0330 |
|---|---|---|
| committer | Ali <adeadmarshal@gmail.com> | 2025-08-04 11:20:25 +0330 |
| commit | b830fb716a3819d5494d850f4fbec45ac3c49ddf (patch) | |
| tree | e9f4c893b37f255ad2c4d8b7221852af93485dc8 /challenge-333/deadmarshal/modula-3/Ch2/src | |
| parent | ce2f933a023e15e5dac73508e56a9aec0e87fae6 (diff) | |
| download | perlweeklychallenge-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.m3 | 57 | ||||
| -rw-r--r-- | challenge-333/deadmarshal/modula-3/Ch2/src/m3makefile | 4 |
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") |
