aboutsummaryrefslogtreecommitdiff
path: root/challenge-195/deadmarshal/oberon/Ch1.Mod
blob: acb5e10420d44b1872e90699bdc2b37e9f85d3e9 (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
MODULE Ch1;

  IMPORT Out;

  PROCEDURE HasDups(N:INTEGER):BOOLEAN;
    VAR
      I:LONGINT;
      Hash:ARRAY 10 OF INTEGER;
  BEGIN
    FOR I := 0 TO LEN(Hash)-1 DO Hash[I] := 0 END;
    IF N > 9999999999 THEN RETURN TRUE END;
    WHILE N # 0 DO
      IF Hash[N MOD 10] # 0 THEN RETURN TRUE END;
      Hash[N MOD 10] := 1;
      N := N DIV 10;
    END;
    RETURN FALSE;
  END HasDups;
  
  PROCEDURE SpecialIntegers(N:INTEGER):INTEGER;
    VAR I,Count:INTEGER;
  BEGIN
    Count := 0;
    FOR I := 1 TO N DO IF ~HasDups(I) THEN INC(Count) END END;
    RETURN Count;
  END SpecialIntegers;
  
BEGIN
  Out.Int(SpecialIntegers(15),0); Out.Ln;
  Out.Int(SpecialIntegers(35),0); Out.Ln;
END Ch1.