gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Lavirint, objedinjeno resenje, doterane praznine i formatiranja
authorIvan Pribela <ivanpribela@gmail.com>
Fri, 8 Dec 2017 20:06:43 +0000 (21:06 +0100)
committerIvan Pribela <ivanpribela@gmail.com>
Fri, 8 Dec 2017 20:06:43 +0000 (21:06 +0100)
PretrazivanjeSaVracanjem/Lavirint/SuperKomplikovanoResenje/Lavirint.java
PretrazivanjeSaVracanjem/Lavirint/SuperKomplikovanoResenje/LavirintProgram.java
PretrazivanjeSaVracanjem/Lavirint/SuperKomplikovanoResenje/Mapa.java
PretrazivanjeSaVracanjem/Lavirint/SuperKomplikovanoResenje/Polje.java
PretrazivanjeSaVracanjem/Lavirint/SuperKomplikovanoResenje/Put.java

index 7f18f3f4eebcc6d52fde1b61cffcb50c51ed54ed..3947b39a7a88eae9c9436f591b1ef6d49e79b430 100644 (file)
@@ -8,149 +8,149 @@ import java.util.Comparator;
  */\r
 public class Lavirint {\r
 \r
-       // Polje m sadrzi kompletnu mapu\r
-       private Mapa m;\r
+    // Polje m sadrzi kompletnu mapu\r
+    private Mapa m;\r
 \r
-       // Polje optResenje sluzi za pamcenje optimalnog resenja\r
-       private Put optResenje;\r
+    // Polje optResenje sluzi za pamcenje optimalnog resenja\r
+    private Put optResenje;\r
 \r
-       // Ucitava mapu iz datog fajla i stampa je na ekran\r
-       public Lavirint(String imeFajla) {\r
-               m = new Mapa(imeFajla);\r
-               m.stampaj();\r
-       }\r
+    // Ucitava mapu iz datog fajla i stampa je na ekran\r
+    public Lavirint(String imeFajla) {\r
+        m = new Mapa(imeFajla);\r
+        m.stampaj();\r
+    }\r
 \r
-       // Provarava da li postoji put do izlaza i vraca vrednost true\r
-       // ako postoji put ili vrednost false ako ne postoji\r
-       public boolean postojiPut(int x, int y) {\r
-               if (x < 0 || x >= m.getSirina() || y < 0 || y >= m.getVisina()) {\r
-                       return false;\r
-               }\r
-               if (m.getPos(x, y) == true) {\r
-                       return false;\r
-               }\r
-               if (m.getMat(x, y) == Mapa.ZID) {\r
-                       return false;\r
-               }\r
-               if (m.getMat(x, y) == Mapa.IZLAZ) {\r
-                       return true;\r
-               }\r
-               m.setPos(x, y, true);\r
-               if (postojiPut(x + 1, y)) {\r
-                       return true;\r
-               }\r
-               if (postojiPut(x - 1, y)) {\r
-                       return true;\r
-               }\r
-               if (postojiPut(x, y + 1)) {\r
-                       return true;\r
-               }\r
-               if (postojiPut(x, y - 1)) {\r
-                       return true;\r
-               }\r
-               m.setPos(x, y, false);\r
-               return false;\r
-       }\r
+    // Provarava da li postoji put do izlaza i vraca vrednost true\r
+    // ako postoji put ili vrednost false ako ne postoji\r
+    public boolean postojiPut(int x, int y) {\r
+        if (x < 0 || x >= m.getSirina() || y < 0 || y >= m.getVisina()) {\r
+            return false;\r
+        }\r
+        if (m.getPos(x, y) == true) {\r
+            return false;\r
+        }\r
+        if (m.getMat(x, y) == Mapa.ZID) {\r
+            return false;\r
+        }\r
+        if (m.getMat(x, y) == Mapa.IZLAZ) {\r
+            return true;\r
+        }\r
+        m.setPos(x, y, true);\r
+        if (postojiPut(x + 1, y)) {\r
+            return true;\r
+        }\r
+        if (postojiPut(x - 1, y)) {\r
+            return true;\r
+        }\r
+        if (postojiPut(x, y + 1)) {\r
+            return true;\r
+        }\r
+        if (postojiPut(x, y - 1)) {\r
+            return true;\r
+        }\r
+        m.setPos(x, y, false);\r
+        return false;\r
+    }\r
 \r
-       // Poziva metodu rput da pronadje i ispise put, ako postoji\r
-       // Ukoliko put ne postoji, ispisuje poruku o gresci\r
-       public void nadjiPut(int x, int y) {\r
-               if (!rput(x, y)) {\r
-                       System.err.println("Ne postoji put");\r
-               }\r
-       }\r
+    // Poziva metodu rput da pronadje i ispise put, ako postoji\r
+    // Ukoliko put ne postoji, ispisuje poruku o gresci\r
+    public void nadjiPut(int x, int y) {\r
+        if (!rput(x, y)) {\r
+            System.err.println("Ne postoji put");\r
+        }\r
+    }\r
 \r
-       // Proverava da li postoji put korsiteci pretrazivanje sa vracanjem\r
-       // Ukoliko se pronadje izlaz iz lavirinta, stampa se put u obrnutom\r
-       // redosledu\r
-       // Put se stampa pri povratku iz rekurzije\r
-       private boolean rput(int x, int y) {\r
-               if (x < 0 || x >= m.getSirina() || y < 0 || y >= m.getVisina()) {\r
-                       return false;\r
-               }\r
-               if (m.getPos(x, y)) {\r
-                       return false;\r
-               }\r
-               if (m.getMat(x, y) == Mapa.ZID) {\r
-                       return false;\r
-               }\r
-               if (m.getMat(x, y) == Mapa.IZLAZ) {\r
-                       System.out.println(x + " " + y);\r
-                       return true;\r
-               }\r
-               m.setPos(x, y, true);\r
-               if (rput(x + 1, y) || rput(x, y + 1) || rput(x, y - 1)\r
-                               || rput(x - 1, y)) {\r
-                       System.out.println(x + " " + y);\r
-                       return true;\r
-               }\r
-               m.setPos(x, y, false);\r
-               return false;\r
-       }\r
+    // Proverava da li postoji put korsiteci pretrazivanje sa vracanjem\r
+    // Ukoliko se pronadje izlaz iz lavirinta, stampa se put u obrnutom\r
+    // redosledu\r
+    // Put se stampa pri povratku iz rekurzije\r
+    private boolean rput(int x, int y) {\r
+        if (x < 0 || x >= m.getSirina() || y < 0 || y >= m.getVisina()) {\r
+            return false;\r
+        }\r
+        if (m.getPos(x, y)) {\r
+            return false;\r
+        }\r
+        if (m.getMat(x, y) == Mapa.ZID) {\r
+            return false;\r
+        }\r
+        if (m.getMat(x, y) == Mapa.IZLAZ) {\r
+            System.out.println(x + " " + y);\r
+            return true;\r
+        }\r
+        m.setPos(x, y, true);\r
+        if (rput(x + 1, y) || rput(x, y + 1) || rput(x, y - 1)\r
+                || rput(x - 1, y)) {\r
+            System.out.println(x + " " + y);\r
+            return true;\r
+        }\r
+        m.setPos(x, y, false);\r
+        return false;\r
+    }\r
 \r
-       // Kreira optimalno resenje za put, pri cemu se za optimalnost resenja\r
-       // koristi komparator po duzini resenja, tj. trazi se najkrace resenje\r
-       // Samo resenje kreira se u metodi optPut\r
-       public Put najkraciPut(int x, int y) {\r
-               Put r = new Put();\r
-               optPut(x, y, r, new KomparatorPoDuzini());\r
-               return optResenje;\r
-       }\r
+    // Kreira optimalno resenje za put, pri cemu se za optimalnost resenja\r
+    // koristi komparator po duzini resenja, tj. trazi se najkrace resenje\r
+    // Samo resenje kreira se u metodi optPut\r
+    public Put najkraciPut(int x, int y) {\r
+        Put r = new Put();\r
+        optPut(x, y, r, new KomparatorPoDuzini());\r
+        return optResenje;\r
+    }\r
 \r
-       // Kreira optimalno resenje za put, pri cemu se za optimalnost resenja\r
-       // koristi komparator po duzini resenja, tj. trazi se najvrednije resenje\r
-       // Samo resenje kreira se u metodi optPut\r
-       public Put najvrednijiPut(int x, int y) {\r
-               Put trenutni = new Put();\r
-               optPut(x, y, trenutni, new KomparatorPoVredosti());\r
-               return optResenje;\r
-       }\r
+    // Kreira optimalno resenje za put, pri cemu se za optimalnost resenja\r
+    // koristi komparator po duzini resenja, tj. trazi se najvrednije resenje\r
+    // Samo resenje kreira se u metodi optPut\r
+    public Put najvrednijiPut(int x, int y) {\r
+        Put trenutni = new Put();\r
+        optPut(x, y, trenutni, new KomparatorPoVredosti());\r
+        return optResenje;\r
+    }\r
 \r
-       // Proverava da li postoji put korsiteci pretrazivanje sa vracanjem\r
-       // Ukoliko se pronadje na prvi ili optimalniji put, taj put se pamti u\r
-       // optResenje\r
-       // Optimalnost puta se proverava komparatorom\r
-       private void optPut(int x, int y, Put trenutni, Comparator<Put> c) {\r
-               if (x < 0 || x >= m.getSirina() || y < 0 || y >= m.getVisina()) {\r
-                       return;\r
-               }\r
-               if (m.getPos(x, y)) {\r
-                       return;\r
-               }\r
-               if (m.getMat(x, y) == Mapa.ZID) {\r
-                       return;\r
-               }\r
-               if (m.getMat(x, y) == Mapa.IZLAZ) {\r
-                       trenutni.dodaj(x, y, 0);\r
-                       if (optResenje == null || c.compare(trenutni, optResenje) < 0) {\r
-                               optResenje = new Put(trenutni);\r
-                       }\r
-                       trenutni.izbaciKraj();\r
-                       return;\r
-               }\r
+    // Proverava da li postoji put korsiteci pretrazivanje sa vracanjem\r
+    // Ukoliko se pronadje na prvi ili optimalniji put, taj put se pamti u\r
+    // optResenje\r
+    // Optimalnost puta se proverava komparatorom\r
+    private void optPut(int x, int y, Put trenutni, Comparator<Put> c) {\r
+        if (x < 0 || x >= m.getSirina() || y < 0 || y >= m.getVisina()) {\r
+            return;\r
+        }\r
+        if (m.getPos(x, y)) {\r
+            return;\r
+        }\r
+        if (m.getMat(x, y) == Mapa.ZID) {\r
+            return;\r
+        }\r
+        if (m.getMat(x, y) == Mapa.IZLAZ) {\r
+            trenutni.dodaj(x, y, 0);\r
+            if (optResenje == null || c.compare(trenutni, optResenje) < 0) {\r
+                optResenje = new Put(trenutni);\r
+            }\r
+            trenutni.izbaciKraj();\r
+            return;\r
+        }\r
 \r
-               // pokusavamo da trazimo dalje put\r
-               m.setPos(x, y, true);\r
-               trenutni.dodaj(x, y, m.getMat(x, y));\r
-               optPut(x + 1, y, trenutni, c);\r
-               optPut(x, y + 1, trenutni, c);\r
-               optPut(x, y - 1, trenutni, c);\r
-               optPut(x - 1, y, trenutni, c);\r
-               m.setPos(x, y, false);\r
-               trenutni.izbaciKraj();\r
-       }\r
+        // pokusavamo da trazimo dalje put\r
+        m.setPos(x, y, true);\r
+        trenutni.dodaj(x, y, m.getMat(x, y));\r
+        optPut(x + 1, y, trenutni, c);\r
+        optPut(x, y + 1, trenutni, c);\r
+        optPut(x, y - 1, trenutni, c);\r
+        optPut(x - 1, y, trenutni, c);\r
+        m.setPos(x, y, false);\r
+        trenutni.izbaciKraj();\r
+    }\r
 }\r
 \r
 // Komparator za puteve  po duzini resenja\r
 class KomparatorPoDuzini implements Comparator<Put> {\r
-       public int compare(Put r1, Put r2) {\r
-               return r1.getLength() - r2.getLength();\r
-       }\r
+    public int compare(Put r1, Put r2) {\r
+        return r1.getLength() - r2.getLength();\r
+    }\r
 }\r
 \r
 // Komparator za puteve po vrednosti resenja\r
 class KomparatorPoVredosti implements Comparator<Put> {\r
-       public int compare(Put r1, Put r2) {\r
-               return r2.getVrednost() - r1.getVrednost();\r
-       }\r
+    public int compare(Put r1, Put r2) {\r
+        return r2.getVrednost() - r1.getVrednost();\r
+    }\r
 }\r
index 328f62ca2247c8e0b096ad1eeaf3021dd574e9cd..0edaac842c7d3ed75413cccd732f3a1e3b1caa79 100644 (file)
@@ -1,71 +1,70 @@
 /**\r
  * Program za nalazenje puta u lavirintu.\r
- * \r
+ *\r
  * Date su cetiri varijante problema, od jednostavnijih ka slozenijima, radi\r
  * ilustracije osnovnih koncepata i postepenog uvodjenja novih.\r
- * \r
+ *\r
  * Najjednostavnije je samo nalazenje da li put postoji.\r
- * \r
+ *\r
  * Prosirenje tog resenja nam ispisuje taj nadjeni put.\r
- * \r
+ *\r
  * Treca varijanta nalazi sve puteve i medju njima bira najkraci.\r
- * \r
+ *\r
  * Cetvrta varijanta resava lavirint u kome su rasuti zlatnici na poljima i\r
  * nalazi put na kome se kupi najvise zlatnika.\r
  */\r
-\r
 public class LavirintProgram {\r
 \r
-       public static void main(String[] args) {\r
-               Svetovid.out.println("Unesite ime fajla: ");\r
-               String fajl = Svetovid.in.readLine();\r
-               if (!Svetovid.testIn(fajl)) {\r
-                       System.out.println("Greska: nema fajla!");\r
-                       return;\r
-               }\r
+    public static void main(String[] args) {\r
+        Svetovid.out.println("Unesite ime fajla: ");\r
+        String fajl = Svetovid.in.readLine();\r
+        if (!Svetovid.testIn(fajl)) {\r
+            System.out.println("Greska: nema fajla!");\r
+            return;\r
+        }\r
 \r
-               System.out.println("1 - da li postoji put");\r
-               System.out.println("2 - ispis nekog puta (ako postoji)");\r
-               System.out.println("3 - nalazenje najkraceg puta");\r
-               System.out.println("4 - nalazenje najvrednijeg puta");\r
-               System.out.println("Unesite izbor 1-4:");\r
-               int op = Svetovid.in.readInt();\r
+        System.out.println("1 - da li postoji put");\r
+        System.out.println("2 - ispis nekog puta (ako postoji)");\r
+        System.out.println("3 - nalazenje najkraceg puta");\r
+        System.out.println("4 - nalazenje najvrednijeg puta");\r
+        System.out.println("Unesite izbor 1-4:");\r
+        int op = Svetovid.in.readInt();\r
 \r
-               Lavirint lavirint = new Lavirint(fajl);\r
-               Put put;\r
+        Lavirint lavirint = new Lavirint(fajl);\r
+        Put put;\r
 \r
-               if (lavirint != null) {\r
+        if (lavirint != null) {\r
 \r
-                       switch (op) {\r
-                       case 1:\r
-                               if (lavirint.postojiPut(0, 0)) {\r
-                                       System.out.println("Postoji put");\r
-                               } else {\r
-                                       System.out.println("Ne postoji put");\r
-                               }\r
-                               break;\r
-                       case 2:\r
-                               lavirint.nadjiPut(0, 0);\r
-                               break;\r
-                       case 3:\r
-                               put = lavirint.najkraciPut(0, 0);\r
-                               if (put != null) {\r
-                                       put.stampaj();\r
-                               } else {\r
-                                       System.out.println("Ne postoji put");\r
-                               }\r
-                               break;\r
-                       case 4:\r
-                               put = lavirint.najvrednijiPut(0, 0);\r
-                               if (put != null) {\r
-                                       put.stampaj();\r
-                               } else {\r
-                                       System.out.println("Ne postoji put");\r
-                               }\r
-                               break;\r
-                       default:\r
-                               System.err.println("Uneli ste pogresan izbor");\r
-                       }\r
-               }\r
-       }\r
-}
\ No newline at end of file
+            switch (op) {\r
+            case 1:\r
+                if (lavirint.postojiPut(0, 0)) {\r
+                    System.out.println("Postoji put");\r
+                } else {\r
+                    System.out.println("Ne postoji put");\r
+                }\r
+                break;\r
+            case 2:\r
+                lavirint.nadjiPut(0, 0);\r
+                break;\r
+            case 3:\r
+                put = lavirint.najkraciPut(0, 0);\r
+                if (put != null) {\r
+                    put.stampaj();\r
+                } else {\r
+                    System.out.println("Ne postoji put");\r
+                }\r
+                break;\r
+            case 4:\r
+                put = lavirint.najvrednijiPut(0, 0);\r
+                if (put != null) {\r
+                    put.stampaj();\r
+                } else {\r
+                    System.out.println("Ne postoji put");\r
+                }\r
+                break;\r
+            default:\r
+                System.err.println("Uneli ste pogresan izbor");\r
+            }\r
+        }\r
+    }\r
+}\r
index 091f37d8f8144fd353e663b0170d9ecf75ebcf97..a156601b92ae2392b1ee89826cfcdf1612f0f0fd 100644 (file)
@@ -1,95 +1,94 @@
-\r
 /**\r
  * Klasa Mapa koristi se za reprezentaciju lavirint i njegovih polja.\r
  */\r
 public class Mapa {\r
 \r
-       // Vrednosti polja i njihova znacenja\r
-       public final static int IZLAZ = -5;\r
-       public final static int ZID = -1;\r
-       public final static int GRESKA = Integer.MIN_VALUE;\r
+    // Vrednosti polja i njihova znacenja\r
+    public final static int IZLAZ = -5;\r
+    public final static int ZID = -1;\r
+    public final static int GRESKA = Integer.MIN_VALUE;\r
+\r
+    // Dimenzije mape\r
+    private int visina, sirina;\r
+\r
+    // Polja mape\r
+    private int[][] mat;\r
 \r
-       // Dimenzije mape\r
-       private int visina, sirina;\r
-       \r
-       // Polja mape\r
-       private int[][] mat;\r
+    // Prilikom pretrazivanja ovde mozemo pamtiti koja polja smo posetili a koja nismo\r
+    private boolean[][] pos;\r
 \r
-       // Prilikom pretrazivanja ovde mozemo pamtiti koja polja smo posetili a koja nismo\r
-       private boolean[][] pos;\r
+    public int getSirina() {\r
+        return sirina;\r
+    }\r
 \r
-       public int getSirina() {\r
-               return sirina;\r
-       }\r
+    public int getVisina() {\r
+        return visina;\r
+    }\r
 \r
-       public int getVisina() {\r
-               return visina;\r
-       }\r
+    public void setPos(int x, int y, boolean b) {\r
+        if (0 <= x && x < sirina && 0 <= y && y < visina) {\r
+            pos[x][y] = b;\r
+        }\r
+    }\r
 \r
-       public void setPos(int x, int y, boolean b) {\r
-               if (0 <= x && x < sirina && 0 <= y && y < visina) {\r
-                       pos[x][y] = b;\r
-               }\r
-       }\r
+    public boolean getPos(int x, int y) {\r
+        if (0 <= x && x < sirina && 0 <= y && y < visina) {\r
+            return pos[x][y];\r
+        } else {\r
+            return true;\r
+        }\r
+    }\r
 \r
-       public boolean getPos(int x, int y) {\r
-               if (0 <= x && x < sirina && 0 <= y && y < visina) {\r
-                       return pos[x][y];\r
-               } else {\r
-                       return true;\r
-               }\r
-       }\r
+    public int getMat(int x, int y) {\r
+        if (0 <= x && x < sirina && 0 <= y && y < visina) {\r
+            return mat[x][y];\r
+        } else {\r
+            return GRESKA;\r
+        }\r
+    }\r
 \r
-       public int getMat(int x, int y) {\r
-               if (0 <= x && x < sirina && 0 <= y && y < visina) {\r
-                       return mat[x][y];\r
-               } else {\r
-                       return GRESKA;\r
-               }\r
-       }\r
+    public Mapa(int sirina, int visina) {\r
+        this.sirina = sirina;\r
+        this.visina = visina;\r
+        mat = new int[sirina][visina];\r
+        pos = new boolean[sirina][visina];\r
+    }\r
 \r
-       public Mapa(int sirina, int visina) {\r
-               this.sirina = sirina;\r
-               this.visina = visina;\r
-               mat = new int[sirina][visina];\r
-               pos = new boolean[sirina][visina];\r
-       }\r
+    public Mapa(String imeFajla) {\r
+        if (!Svetovid.testIn(imeFajla)) {\r
+            throw new RuntimeException("Fajl za kreiranje mape (" + imeFajla + ") nije prisupacan");\r
+        }\r
+        sirina = Svetovid.in(imeFajla).readInt();\r
+        visina = Svetovid.in(imeFajla).readInt();\r
+        mat = new int[sirina][visina];\r
+        pos = new boolean[sirina][visina];\r
+        for (int j = 0; j < visina; j++) {\r
+            for (int i = 0; i < sirina; i++) {\r
+                mat[i][j] = Svetovid.in(imeFajla).readInt();\r
+            }\r
+        }\r
+        Svetovid.closeIn(imeFajla);\r
+        Prikaz.boja(ZID, Prikaz.CRNA, null);\r
+        Prikaz.boja(IZLAZ, Prikaz.CRVENA, Prikaz.BELA);\r
+        Prikaz.boja(1, 20, Prikaz.SVETLO_ZELENA, Prikaz.ZELENA, Prikaz.CRNA);\r
+        Prikaz.boja(99, Prikaz.ZUTA, Prikaz.CRNA);\r
+        Prikaz.mapa("Lavirint", getSirina(), getVisina(), this::getMat);\r
+    }\r
 \r
-       public Mapa(String imeFajla) {\r
-               if (!Svetovid.testIn(imeFajla)) {\r
-                       throw new RuntimeException("Fajl za kreiranje mape (" + imeFajla + ") nije prisupacan");\r
-               }\r
-               sirina = Svetovid.in(imeFajla).readInt();\r
-               visina = Svetovid.in(imeFajla).readInt();\r
-               mat = new int[sirina][visina];\r
-               pos = new boolean[sirina][visina];\r
-               for (int j = 0; j < visina; j++) {\r
-                       for (int i = 0; i < sirina; i++) {\r
-                               mat[i][j] = Svetovid.in(imeFajla).readInt();\r
-                       }\r
-               }\r
-               Svetovid.closeIn(imeFajla);\r
-               Prikaz.boja(ZID, Prikaz.CRNA, null);\r
-               Prikaz.boja(IZLAZ, Prikaz.CRVENA, Prikaz.BELA);\r
-               Prikaz.boja(1, 20, Prikaz.SVETLO_ZELENA, Prikaz.ZELENA, Prikaz.CRNA);\r
-               Prikaz.boja(99, Prikaz.ZUTA, Prikaz.CRNA);\r
-               Prikaz.mapa("Lavirint", getSirina(), getVisina(), this::getMat);\r
-       }\r
+    public void stampaj() {\r
+        if (visina != 0 && sirina != 0) {\r
+            System.out.println();\r
+            System.out.println("Mapa sirine " + sirina + " i visine " + visina);\r
+            for (int j = 0; j < visina; j++) {\r
+                for (int i = 0; i < sirina; i++) {\r
+                    System.out.printf("%5d", mat[i][j]);\r
+                }\r
+                System.out.println();\r
+            }\r
+        }\r
+    }\r
 \r
-       public void stampaj() {\r
-               if (visina != 0 && sirina != 0) {\r
-                       System.out.println();\r
-                       System.out.println("Mapa sirine " + sirina + " i visine " + visina);\r
-                       for (int j = 0; j < visina; j++) {\r
-                               for (int i = 0; i < sirina; i++) {\r
-                                       System.out.printf("%5d", mat[i][j]);\r
-                               }\r
-                               System.out.println();\r
-                       }\r
-               }\r
-       }\r
-       \r
-       public String toString() {\r
-               return "Mapa velicine " + sirina + " x " + visina;\r
-       }\r
+    public String toString() {\r
+        return "Mapa velicine " + sirina + " x " + visina;\r
+    }\r
 }\r
index 15676d1a300ae7afa640f15d8194e57cf234cea6..c0dbb15bb3441c70a698da9c5fd5445fc1859c24 100644 (file)
@@ -4,27 +4,27 @@
  */\r
 public class Polje {\r
 \r
-       private final int x, y, v;\r
+    private final int x, y, v;\r
 \r
-       public Polje(int x, int y, int v) {\r
-               this.x = x;\r
-               this.y = y;\r
-               this.v = v;\r
-       }\r
+    public Polje(int x, int y, int v) {\r
+        this.x = x;\r
+        this.y = y;\r
+        this.v = v;\r
+    }\r
 \r
-       public int getX() {\r
-               return x;\r
-       }\r
+    public int getX() {\r
+        return x;\r
+    }\r
 \r
-       public int getY() {\r
-               return y;\r
-       }\r
+    public int getY() {\r
+        return y;\r
+    }\r
 \r
-       public int getV() {\r
-               return v;\r
-       }\r
+    public int getV() {\r
+        return v;\r
+    }\r
 \r
-       public String toString() {\r
-               return "(" + x + ", " + y + ") " + v;\r
-       }\r
+    public String toString() {\r
+        return "(" + x + ", " + y + ") " + v;\r
+    }\r
 }\r
index 9ecf9a1e655c7be5e1b30773e1ad8c344f1925f0..c6bdda89a9682f967b5b55265d39b0913711ae07 100644 (file)
@@ -9,91 +9,91 @@ import javafx.scene.paint.Color;
  */\r
 public class Put {\r
 \r
-       // Pamtimo sva polja na putu\r
-       private ArrayList<Polje> polja;\r
-\r
-       // Dodato da se omoguci pristup poljima puta "od spolja" (za proveru kvaliteta puta na primer),\r
-       // ali tako da ne moze da se utice na sam sadrzaj te liste\r
-       private List<Polje> nepromenljivaListaPolja;\r
-\r
-       // Potrebno za graficki prikaz\r
-       private String naziv;\r
-\r
-       // Potrebno za graficki prikaz\r
-       private Put(String naziv, Color boja) {\r
-               polja = new ArrayList<Polje>();\r
-               nepromenljivaListaPolja = Collections.unmodifiableList(polja);\r
-               this.naziv = naziv;\r
-               Prikaz.put(naziv, polja, Polje::getX, Polje::getY, this::toString, boja);\r
-       }\r
-\r
-       // Kreira novo prazno resenje\r
-       public Put() {\r
-               this("Trenutni", Prikaz.TIRKIZNA);\r
-       }\r
-\r
-       // Kreira novo resenje sa istim sadrzajem kao original\r
-       public Put(Put original) {\r
-               this("Optimalan", Prikaz.LJUBICASTA);\r
-               polja.addAll(original.polja);\r
-       }\r
-\r
-       // Dodaje polje u resenje\r
-       public void dodaj(int x, int y, int v) {\r
-               polja.add(new Polje(x, y, v));\r
-               Prikaz.osveziPut(naziv);\r
-       }\r
-\r
-       // Izbacuje poslednje polje iz puta\r
-       public void izbaciKraj() {\r
-               if (getLength() > 0) {\r
-                       polja.remove(getLength() - 1);\r
-                       Prikaz.osveziPut(naziv);\r
-               } else {\r
-                       throw new IllegalStateException("Resenje je vec prazno");\r
-               }\r
-       }\r
-\r
-       // Stampa put\r
-       public void stampaj() {\r
-               System.out.println();\r
-               System.out.println("Put duzine " + getLength() + " i vrednosti " + getVrednost());\r
-               for (int i = 0; i < getLength(); i++) {\r
-                       System.out.println(polja.get(i));\r
-               }\r
-               Prikaz.put("Trenutni", null, null, null);\r
-               Prikaz.put("Optimalan", null, null, null);\r
-               Prikaz.put("Najbolji", polja, Polje::getX, Polje::getY, this::toString, Prikaz.LJUBICASTA);\r
-       }\r
-\r
-       public String toString() {\r
-               return getVrednost() + "\u20ac " + getLength() + "m";\r
-       }\r
-\r
-       // Vraca duzinu puta\r
-       public int getLength() {\r
-               return polja.size();\r
-       }\r
-\r
-       // Vraca i-to polje na putu\r
-       // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja\r
-       public Polje getPolje(int i) {\r
-               return polja.get(i);\r
-       }\r
-\r
-       // Vraca sva polja na putu\r
-       // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja\r
-       public List<Polje> getPolja() {\r
-               return nepromenljivaListaPolja;\r
-       }\r
-\r
-       // Vraca vrednost puta\r
-       // Vrednost se definise kao zbir svih vrednosti polja na putu\r
-       public int getVrednost() {\r
-               int rez = 0;\r
-               for (Polje p : polja) {\r
-                       rez = rez + p.getV();\r
-               }\r
-               return rez;\r
-       }\r
+    // Pamtimo sva polja na putu\r
+    private ArrayList<Polje> polja;\r
+\r
+    // Dodato da se omoguci pristup poljima puta "od spolja" (za proveru kvaliteta puta na primer),\r
+    // ali tako da ne moze da se utice na sam sadrzaj te liste\r
+    private List<Polje> nepromenljivaListaPolja;\r
+\r
+    // Potrebno za graficki prikaz\r
+    private String naziv;\r
+\r
+    // Potrebno za graficki prikaz\r
+    private Put(String naziv, Color boja) {\r
+        polja = new ArrayList<Polje>();\r
+        nepromenljivaListaPolja = Collections.unmodifiableList(polja);\r
+        this.naziv = naziv;\r
+        Prikaz.put(naziv, polja, Polje::getX, Polje::getY, this::toString, boja);\r
+    }\r
+\r
+    // Kreira novo prazno resenje\r
+    public Put() {\r
+        this("Trenutni", Prikaz.TIRKIZNA);\r
+    }\r
+\r
+    // Kreira novo resenje sa istim sadrzajem kao original\r
+    public Put(Put original) {\r
+        this("Optimalan", Prikaz.LJUBICASTA);\r
+        polja.addAll(original.polja);\r
+    }\r
+\r
+    // Dodaje polje u resenje\r
+    public void dodaj(int x, int y, int v) {\r
+        polja.add(new Polje(x, y, v));\r
+        Prikaz.osveziPut(naziv);\r
+    }\r
+\r
+    // Izbacuje poslednje polje iz puta\r
+    public void izbaciKraj() {\r
+        if (getLength() > 0) {\r
+            polja.remove(getLength() - 1);\r
+            Prikaz.osveziPut(naziv);\r
+        } else {\r
+            throw new IllegalStateException("Resenje je vec prazno");\r
+        }\r
+    }\r
+\r
+    // Stampa put\r
+    public void stampaj() {\r
+        System.out.println();\r
+        System.out.println("Put duzine " + getLength() + " i vrednosti " + getVrednost());\r
+        for (int i = 0; i < getLength(); i++) {\r
+            System.out.println(polja.get(i));\r
+        }\r
+        Prikaz.put("Trenutni", null, null, null);\r
+        Prikaz.put("Optimalan", null, null, null);\r
+        Prikaz.put("Najbolji", polja, Polje::getX, Polje::getY, this::toString, Prikaz.LJUBICASTA);\r
+    }\r
+\r
+    public String toString() {\r
+        return getVrednost() + "\u20ac " + getLength() + "m";\r
+    }\r
+\r
+    // Vraca duzinu puta\r
+    public int getLength() {\r
+        return polja.size();\r
+    }\r
+\r
+    // Vraca i-to polje na putu\r
+    // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja\r
+    public Polje getPolje(int i) {\r
+        return polja.get(i);\r
+    }\r
+\r
+    // Vraca sva polja na putu\r
+    // Ne koristi se u ovoj verziji zadatka. Moze se koristiti za proveru kvaliteta resenja\r
+    public List<Polje> getPolja() {\r
+        return nepromenljivaListaPolja;\r
+    }\r
+\r
+    // Vraca vrednost puta\r
+    // Vrednost se definise kao zbir svih vrednosti polja na putu\r
+    public int getVrednost() {\r
+        int rez = 0;\r
+        for (Polje p : polja) {\r
+            rez = rez + p.getV();\r
+        }\r
+        return rez;\r
+    }\r
 }\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner