aboutsummaryrefslogtreecommitdiff
path: root/challenge-268/deadmarshal/modula-3/ch2/src/Ch2.m3
blob: 3b09cae189c54abcf0ecf63677c168cfbc077f25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
MODULE Ch2 EXPORTS Main;

IMPORT SIO,IntSorting,IntSeq;

VAR
  A1:ARRAY[0..3] OF INTEGER := ARRAY OF INTEGER{2,5,3,4};
  A2:ARRAY[0..7] OF INTEGER := ARRAY OF INTEGER{9,4,1,3,6,4,6,1};
  A3:ARRAY[0..3] OF INTEGER := ARRAY OF INTEGER{1,2,2,3};
  
PROCEDURE NumberGame(VAR A:ARRAY OF INTEGER):IntSeq.T =
  VAR Ret:IntSeq.T := NEW(IntSeq.T).init(NUMBER(A));
  BEGIN
    IntSorting.QuickSort(A,FIRST(A),LAST(A));
    FOR I := FIRST(A) TO LAST(A) BY 2 DO
      Ret.addhi(A[I+1]);
      Ret.addhi(A[I])
    END;
    RETURN Ret
  END NumberGame;

PROCEDURE PrintSequence(READONLY S:IntSeq.T) =
  BEGIN
    FOR I := 0 TO S.size()-1 DO
      SIO.PutInt(S.get(I)); SIO.PutChar(' ')
    END;
    SIO.Nl()
  END PrintSequence;

BEGIN
  PrintSequence(NumberGame(A1));
  PrintSequence(NumberGame(A2));
  PrintSequence(NumberGame(A3));
END Ch2.