gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
07 - bojenje, XDS verzija (LONGCARD)
authorDoni Pracner <quinnuendo@gmail.com>
Tue, 26 Nov 2013 12:30:26 +0000 (13:30 +0100)
committerDoni Pracner <quinnuendo@gmail.com>
Tue, 26 Nov 2013 12:30:26 +0000 (13:30 +0100)
07. Bojenje mape/XDS/BOJENJE.MOD [new file with mode: 0644]

diff --git a/07. Bojenje mape/XDS/BOJENJE.MOD b/07. Bojenje mape/XDS/BOJENJE.MOD
new file mode 100644 (file)
index 0000000..479c3f7
--- /dev/null
@@ -0,0 +1,128 @@
+MODULE Bojenje;\r
+\r
+  FROM IO IMPORT\r
+    WrStr, WrLn, WrCard;\r
+\r
+  CONST\r
+    MaxBrojZemalja = 30;\r
+    DuzinaImena = 18;\r
+\r
+  TYPE\r
+    RangImena = [1 .. DuzinaImena];\r
+    Zemlja = [1 .. MaxBrojZemalja];\r
+    SkupZ = SET OF Zemlja;\r
+    Boja = (Crvena, Plava, Zelena, Zuta);\r
+    GraniceTip = ARRAY Zemlja OF SkupZ;\r
+    BojeZemalja = ARRAY Boja OF SkupZ;\r
+    ImenaZemalja = ARRAY Zemlja, RangImena OF CHAR;\r
+\r
+  VAR\r
+    Granice: GraniceTip;\r
+    Obojeno: BojeZemalja;\r
+    Ime: ImenaZemalja;\r
+    BrZ: Zemlja;\r
+    RBr: CARDINAL;\r
+\r
+  PROCEDURE Inicijalizacija;\r
+    VAR\r
+      i: Boja;\r
+  BEGIN\r
+    FOR i:= MIN(Boja) TO MAX(Boja) DO\r
+      Obojeno[i]:= SkupZ {};\r
+    END;\r
+    Ime[ 1]:= 'Maroko';\r
+    Ime[ 2]:= 'Zapadna Sahara';\r
+    Ime[ 3]:= 'Alzir';\r
+    Ime[ 4]:= 'Tunis';\r
+    Ime[ 5]:= 'Mauritanija';\r
+    Ime[ 6]:= 'Mali';\r
+    Ime[ 7]:= 'Niger';\r
+    Ime[ 8]:= 'Libija';\r
+    Ime[ 9]:= 'Senegal';\r
+    Ime[10]:= 'Gvineja';\r
+    Ime[11]:= 'Obala Slonovace';\r
+    Ime[12]:= 'Burkina Faso';\r
+    Ime[13]:= 'Benin';\r
+    Ime[14]:= 'Nigerija';\r
+    Ime[15]:= 'Cad';\r
+    Ime[16]:= 'Sudan';\r
+    Ime[17]:= 'Egipat';\r
+    Ime[18]:= 'Gambija';\r
+    Ime[19]:= 'Gvineja Bisao';\r
+    Ime[20]:= 'Siera Leone';\r
+    Granice[ 1]:= SkupZ {3, 2};\r
+    Granice[ 2]:= SkupZ {1, 3, 5};\r
+    Granice[ 3]:= SkupZ {1, 2, 5, 6, 7, 8, 4};\r
+    Granice[ 4]:= SkupZ {3, 8};\r
+    Granice[ 5]:= SkupZ {2, 3, 6, 9};\r
+    Granice[ 6]:= SkupZ {3, 5, 9, 10, 11, 12, 7};\r
+    Granice[ 7]:= SkupZ {3, 6, 12, 13, 14, 15, 8};\r
+    Granice[ 8]:= SkupZ {4, 3, 7, 15, 16, 17};\r
+    Granice[ 9]:= SkupZ {18, 19, 10, 6, 5};\r
+    Granice[10]:= SkupZ {19, 9, 6, 20, 11};\r
+    Granice[11]:= SkupZ {10, 6, 12};\r
+    Granice[12]:= SkupZ {6, 11, 13, 7};\r
+    Granice[13]:= SkupZ {12, 7, 14};\r
+    Granice[14]:= SkupZ {13, 7, 15};\r
+    Granice[15]:= SkupZ {14, 7, 8, 16};\r
+    Granice[16]:= SkupZ {17, 8, 15};\r
+    Granice[17]:= SkupZ {8, 15, 16};\r
+    Granice[18]:= SkupZ {9};\r
+    Granice[19]:= SkupZ {9, 10};\r
+    Granice[20]:= SkupZ {10};\r
+    RBr:= 0;\r
+    BrZ:= 20\r
+  END Inicijalizacija;\r
+\r
+  PROCEDURE StampajSkup(VAR S: SkupZ);\r
+    VAR\r
+      z: Zemlja;\r
+      Prvi: BOOLEAN;\r
+  BEGIN\r
+    Prvi:= TRUE;\r
+    FOR z:= 1 TO MaxBrojZemalja DO\r
+      IF z IN S THEN\r
+        IF Prvi THEN\r
+          WrStr(Ime[z]);\r
+          Prvi:= FALSE;\r
+        ELSE\r
+          WrStr(', ');\r
+          WrStr(Ime[z]);\r
+        END;\r
+      END;\r
+    END;\r
+  END StampajSkup;\r
+\r
+\r
+  PROCEDURE Stampa(RBr: CARDINAL; VAR Obojeno: BojeZemalja);\r
+  BEGIN\r
+    WrLn; WrLn; WrCard(RBr, 1);\r
+    WrLn; WrStr('Crvena: '); StampajSkup(Obojeno[Crvena]);\r
+    WrLn; WrStr('Plava:  '); StampajSkup(Obojeno[Plava]);\r
+    WrLn; WrStr('Zelena: '); StampajSkup(Obojeno[Zelena]);\r
+    WrLn; WrStr('Zuta:   '); StampajSkup(Obojeno[Zuta]);\r
+  END Stampa;\r
+\r
+  PROCEDURE Oboji(z: Zemlja);\r
+    VAR\r
+      i: Boja;\r
+  BEGIN\r
+    FOR i:= MIN(Boja) TO MAX(Boja) DO\r
+      IF Granice[z] * Obojeno[i] = SkupZ {} THEN\r
+        Obojeno[i]:= Obojeno[i] + SkupZ {z};\r
+        IF z = BrZ THEN\r
+          INC(RBr);\r
+          Stampa(RBr, Obojeno);\r
+        ELSE\r
+          Oboji(z + 1);\r
+        END;\r
+        Obojeno[i]:= Obojeno[i] - SkupZ {z};\r
+      END;\r
+    END;\r
+  END Oboji;\r
+\r
+BEGIN\r
+  Inicijalizacija;\r
+  Oboji(1);\r
+  (* Broj mogucih bojenja je 1 527 552 *)\r
+END Bojenje.\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner