gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Lavirint, objedinjeno resenje, doterana klasa Lavirint
[spa2-materijali.git] / PretrazivanjeSaVracanjem / Lavirint / NajboljiPut / Resenje.java
1 /**
2 * Klasa Resenje koristi se za pamcenje pronadjenog puta.
3 *
4 * Polje Polja se koristi za pamcenje svih polja na putu.
5 *
6 * Polje nepromenljivaListaPolja je dodata da se omoguci
7 * pristup poljima resenja "spolja" (za proveru kvaliteta puta na primer),
8 * ali tako da ne moze da se utice na sam sadrzaj te liste.
9 */
10 import java.util.ArrayList;
11 import java.util.List;
12 import java.util.Collections;
14 public class Resenje {
15 private ArrayList<Polje> polja;
16 private List<Polje> nepromenljivaListaPolja;
18 public Resenje() {
19 polja = new ArrayList<Polje>();
20 nepromenljivaListaPolja = Collections.unmodifiableList(polja);
21 }
23 /**
24 Pravi novo resenje sa istim sadrzajem kao original
25 */
26 public Resenje(Resenje original) {
27 // pozovemo "podrazumevani" konstruktor
28 this();
29 // iskopiramo sva polja iz originala
30 for (Polje p : original.getPolja()) {
31 dodaj(p.getX(), p.getY(), p.getV());
32 }
33 }
35 // Dodaje pulje u resenje
36 public void dodaj(int x, int y, int v) {
37 polja.add(new Polje(x, y, v));
38 }
40 // Izbacuje polje iz resenja
41 public void izbaciKraj() {
42 if (getLength() > 0) {
43 polja.remove(getLength() - 1);
44 } else {
45 System.err.println("greska: resenje je vec prazno");
46 }
47 }
49 // Stampa resenje
50 public void stampaj() {
51 System.out.println(getLength());
52 for (int i = 0; i < getLength(); i++)
53 System.out.println(polja.get(i));
54 }
56 public String toString() {
57 StringBuilder sb = new StringBuilder();
58 sb.append("Resenje: [ ");
59 if (getLength()>0) {
60 sb.append(polja.get(0));
61 for (int i = 1; i < getLength(); i++) {
62 sb.append(", " + polja.get(i));
63 }
64 }
65 sb.append(" ]");
67 return sb.toString();
68 }
70 // Vraca duzinu resenja
71 public int getLength() {
72 return polja.size();
73 }
75 // Vraca i-to polje na putu. Ne koristi se u ovoj verziji zadatka.
76 // Moze se koristiti za proveru kvaliteta resenja
77 public Polje getPolje(int i) {
78 return polja.get(i);
79 }
81 // Vraca sva polja na putu. Ne koristi se u ovoj verziji zadatka.
82 // Moze se koristiti za proveru kvaliteta resenja
83 public List<Polje> getPolja() {
84 return nepromenljivaListaPolja;
85 }
87 // Kreira nezavisnu kopiju ovog resenja
88 public Resenje kopija() {
89 Resenje rez = new Resenje();
90 for (Polje p : polja) {
91 rez.dodaj(p.getX(), p.getY(), p.getV());
92 }
93 return rez;
94 }
96 // Vraca vrednost puta
97 // Vrednost se definise kao zbir svih vrednosti polja na putu
98 public int getVrednost() {
99 int rez = 0;
100 for (Polje p : polja) {
101 rez = rez + p.getV();
103 return rez;
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner