gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control system
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 76ef3a4)
raw | patch | inline | side by side (parent: 76ef3a4)
author | Doni Pracner <quinnuendo@gmail.com> | |
Tue, 5 Dec 2017 14:51:08 +0000 (15:51 +0100) | ||
committer | Doni Pracner <quinnuendo@gmail.com> | |
Tue, 5 Dec 2017 14:51:08 +0000 (15:51 +0100) |
Klasa Resenje je preimenovana u Put, posto je tako logicnije.
U skladu sa tim su menjani i neki komentari i neka imena promenljivih
i slicno.
U skladu sa tim su menjani i neki komentari i neka imena promenljivih
i slicno.
diff --git a/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Lavirint.java b/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Lavirint.java
index 77069ae02001960c6c0c9ffec707739bb05fbc7c..5b84e5adfddf7d0207d7c8a90d54dd6bb8ebc2ee 100644 (file)
private Mapa m;\r
\r
// Polje optResenje sluzi za pamcenje optimalnog resenja\r
- private Resenje optResenje;\r
+ private Put optResenje;\r
\r
// Ucitava mapu iz datog fajla i stampa je na ekran\r
Lavirint(String imeFajla) {\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 Resenje najkraciPut(int x, int y) {\r
- Resenje r = new Resenje();\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 najvrednije resenje\r
// Samo resenje kreira se u metodi optPut\r
- public Resenje najvrednijiPut(int x, int y) {\r
- Resenje r = new Resenje();\r
- optPut(x, y, r, new KomparatorPoVredosti());\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 resenja se proverava komparatorom\r
- private void optPut(int x, int y, Resenje r, Comparator<Resenje> c) {\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
return;\r
}\r
if (m.getMat(x, y) == Mapa.IZLAZ) {\r
- r.dodaj(x, y, 0);\r
- if (optResenje == null || c.compare(r, optResenje) < 0) {\r
- optResenje = new Resenje(r);\r
+ trenutni.dodaj(x, y, 0);\r
+ if (optResenje == null || c.compare(trenutni, optResenje) < 0) {\r
+ optResenje = new Put(trenutni);\r
}\r
- r.izbaciKraj();\r
+ trenutni.izbaciKraj();\r
return;\r
}\r
\r
// pokusavamo da trazimo dalje put\r
m.setPos(x, y, true);\r
- r.dodaj(x, y, m.getMat(x, y));\r
- optPut(x + 1, y, r, c);\r
- optPut(x, y + 1, r, c);\r
- optPut(x, y - 1, r, c);\r
- optPut(x - 1, y, r, c);\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
- r.izbaciKraj();\r
+ trenutni.izbaciKraj();\r
}\r
}\r
\r
-// Komparator za resenja po duzini resenja\r
-class KomparatorPoDuzini implements Comparator<Resenje> {\r
- public int compare(Resenje r1, Resenje r2) {\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
}\r
\r
-// Komparator za resenja po vrednosti resenja\r
-class KomparatorPoVredosti implements Comparator<Resenje> {\r
- public int compare(Resenje r1, Resenje r2) {\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
}\r
diff --git a/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/LavirintProgram.java b/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/LavirintProgram.java
index 6566938bdbf7a9252080de084bb650f5dc118ba1..01adf52a02111ad572366b4f76d22cb639ea0b92 100644 (file)
}\r
\r
Lavirint l = new Lavirint(fajl);\r
- Resenje r;\r
+ Put r;\r
\r
if (l != null) {\r
System.out.println("1 - da li postoji put");\r
diff --git a/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Put.java b/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Put.java
--- /dev/null
@@ -0,0 +1,98 @@
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
+import javafx.scene.paint.Color;\r
+\r
+/**\r
+ * Klasa Put koristi se za pamcenje puta kroz mapu.\r
+ */\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(getLength());\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
diff --git a/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Resenje.java b/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Resenje.java
+++ /dev/null
@@ -1,98 +0,0 @@
-import java.util.ArrayList;\r
-import java.util.Collections;\r
-import java.util.List;\r
-\r
-import javafx.scene.paint.Color;\r
-\r
-/**\r
- * Klasa Resenje koristi se za pamcenje puta kroz mapu.\r
- */\r
-public class Resenje {\r
-\r
- // Pamtimo sva polja na putu\r
- private ArrayList<Polje> polja;\r
-\r
- // Dodato da se omoguci pristup poljima resenja "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 Resenje(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 Resenje() {\r
- this("Trenutni", Prikaz.TIRKIZNA);\r
- }\r
-\r
- // Kreira novo resenje sa istim sadrzajem kao original\r
- public Resenje(Resenje 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 resenja\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 resenje\r
- public void stampaj() {\r
- System.out.println(getLength());\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 resenja\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