gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
07 - bojenje, XDS verzija (LONGCARD)
[spa2-teorijske-vezbe.git] / 07. Bojenje mape / XDS / BOJENJE.MOD
1 MODULE Bojenje;
3 FROM IO IMPORT
4 WrStr, WrLn, WrCard;
6 CONST
7 MaxBrojZemalja = 30;
8 DuzinaImena = 18;
10 TYPE
11 RangImena = [1 .. DuzinaImena];
12 Zemlja = [1 .. MaxBrojZemalja];
13 SkupZ = SET OF Zemlja;
14 Boja = (Crvena, Plava, Zelena, Zuta);
15 GraniceTip = ARRAY Zemlja OF SkupZ;
16 BojeZemalja = ARRAY Boja OF SkupZ;
17 ImenaZemalja = ARRAY Zemlja, RangImena OF CHAR;
19 VAR
20 Granice: GraniceTip;
21 Obojeno: BojeZemalja;
22 Ime: ImenaZemalja;
23 BrZ: Zemlja;
24 RBr: CARDINAL;
26 PROCEDURE Inicijalizacija;
27 VAR
28 i: Boja;
29 BEGIN
30 FOR i:= MIN(Boja) TO MAX(Boja) DO
31 Obojeno[i]:= SkupZ {};
32 END;
33 Ime[ 1]:= 'Maroko';
34 Ime[ 2]:= 'Zapadna Sahara';
35 Ime[ 3]:= 'Alzir';
36 Ime[ 4]:= 'Tunis';
37 Ime[ 5]:= 'Mauritanija';
38 Ime[ 6]:= 'Mali';
39 Ime[ 7]:= 'Niger';
40 Ime[ 8]:= 'Libija';
41 Ime[ 9]:= 'Senegal';
42 Ime[10]:= 'Gvineja';
43 Ime[11]:= 'Obala Slonovace';
44 Ime[12]:= 'Burkina Faso';
45 Ime[13]:= 'Benin';
46 Ime[14]:= 'Nigerija';
47 Ime[15]:= 'Cad';
48 Ime[16]:= 'Sudan';
49 Ime[17]:= 'Egipat';
50 Ime[18]:= 'Gambija';
51 Ime[19]:= 'Gvineja Bisao';
52 Ime[20]:= 'Siera Leone';
53 Granice[ 1]:= SkupZ {3, 2};
54 Granice[ 2]:= SkupZ {1, 3, 5};
55 Granice[ 3]:= SkupZ {1, 2, 5, 6, 7, 8, 4};
56 Granice[ 4]:= SkupZ {3, 8};
57 Granice[ 5]:= SkupZ {2, 3, 6, 9};
58 Granice[ 6]:= SkupZ {3, 5, 9, 10, 11, 12, 7};
59 Granice[ 7]:= SkupZ {3, 6, 12, 13, 14, 15, 8};
60 Granice[ 8]:= SkupZ {4, 3, 7, 15, 16, 17};
61 Granice[ 9]:= SkupZ {18, 19, 10, 6, 5};
62 Granice[10]:= SkupZ {19, 9, 6, 20, 11};
63 Granice[11]:= SkupZ {10, 6, 12};
64 Granice[12]:= SkupZ {6, 11, 13, 7};
65 Granice[13]:= SkupZ {12, 7, 14};
66 Granice[14]:= SkupZ {13, 7, 15};
67 Granice[15]:= SkupZ {14, 7, 8, 16};
68 Granice[16]:= SkupZ {17, 8, 15};
69 Granice[17]:= SkupZ {8, 15, 16};
70 Granice[18]:= SkupZ {9};
71 Granice[19]:= SkupZ {9, 10};
72 Granice[20]:= SkupZ {10};
73 RBr:= 0;
74 BrZ:= 20
75 END Inicijalizacija;
77 PROCEDURE StampajSkup(VAR S: SkupZ);
78 VAR
79 z: Zemlja;
80 Prvi: BOOLEAN;
81 BEGIN
82 Prvi:= TRUE;
83 FOR z:= 1 TO MaxBrojZemalja DO
84 IF z IN S THEN
85 IF Prvi THEN
86 WrStr(Ime[z]);
87 Prvi:= FALSE;
88 ELSE
89 WrStr(', ');
90 WrStr(Ime[z]);
91 END;
92 END;
93 END;
94 END StampajSkup;
97 PROCEDURE Stampa(RBr: CARDINAL; VAR Obojeno: BojeZemalja);
98 BEGIN
99 WrLn; WrLn; WrCard(RBr, 1);
100 WrLn; WrStr('Crvena: '); StampajSkup(Obojeno[Crvena]);
101 WrLn; WrStr('Plava: '); StampajSkup(Obojeno[Plava]);
102 WrLn; WrStr('Zelena: '); StampajSkup(Obojeno[Zelena]);
103 WrLn; WrStr('Zuta: '); StampajSkup(Obojeno[Zuta]);
104 END Stampa;
106 PROCEDURE Oboji(z: Zemlja);
107 VAR
108 i: Boja;
109 BEGIN
110 FOR i:= MIN(Boja) TO MAX(Boja) DO
111 IF Granice[z] * Obojeno[i] = SkupZ {} THEN
112 Obojeno[i]:= Obojeno[i] + SkupZ {z};
113 IF z = BrZ THEN
114 INC(RBr);
115 Stampa(RBr, Obojeno);
116 ELSE
117 Oboji(z + 1);
118 END;
119 Obojeno[i]:= Obojeno[i] - SkupZ {z};
120 END;
121 END;
122 END Oboji;
124 BEGIN
125 Inicijalizacija;
126 Oboji(1);
127 (* Broj mogucih bojenja je 1 527 552 *)
128 END Bojenje.
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner