summaryrefslogtreecommitdiffstats
path: root/šola/p1/dn/7/Stanovanje.java
diff options
context:
space:
mode:
Diffstat (limited to 'šola/p1/dn/7/Stanovanje.java')
-rw-r--r--šola/p1/dn/7/Stanovanje.java40
1 files changed, 33 insertions, 7 deletions
diff --git a/šola/p1/dn/7/Stanovanje.java b/šola/p1/dn/7/Stanovanje.java
index 30db09f..cafc246 100644
--- a/šola/p1/dn/7/Stanovanje.java
+++ b/šola/p1/dn/7/Stanovanje.java
@@ -56,19 +56,25 @@ public class Stanovanje {
r.addAll(Arrays.asList(stanovanje.stanovalci));
return r.toArray(new Oseba[0]);
}
- private Set<Stanovanje> soseščina() {
- return this.soseščina(new HashSet<Stanovanje>());
+ public Set<Stanovanje> soseščina() { // soseščina na globini pravzaprav, slabo sem prebral navodilo sprva
+ return this.soseščina(new HashSet<Stanovanje>(), 2);
}
- private Set<Stanovanje> soseščina(Set<Stanovanje> obiskani) {
+ public Set<Stanovanje> vsa_dosegljiva_stanovanja () {
+ return this.soseščina(new HashSet<Stanovanje>(), Integer.MAX_VALUE);
+ }
+ private Set<Stanovanje> soseščina(Set<Stanovanje> obiskani, int globina) {
Set<Stanovanje> r = new HashSet<Stanovanje>();
- if (obiskani.contains(this))
+ if (obiskani.contains(this) || globina < 0)
return r;
- r.addAll(Arrays.asList(this.sosedje));
+ if (globina == 0 || globina == Integer.MAX_VALUE)
+ r.add(this);
+ if (globina != Integer.MAX_VALUE)
+ globina--;
r.remove(null);
obiskani.add(this);
for (int i = 0; i < this.sosedje.length; i++)
if (this.sosedje[i] != null)
- r.addAll(this.sosedje[i].soseščina(obiskani));
+ r.addAll(this.sosedje[i].soseščina(obiskani, globina));
obiskani.remove(this);
return r;
}
@@ -89,7 +95,27 @@ public class Stanovanje {
r.addAll(this.sosedje[2].pozicije(obiskani, x+1, y));
if (this.sosedje[3] != null)
r.addAll(this.sosedje[3].pozicije(obiskani, x, y-1));
- obiskani.remove(this);
+ // obiskani.remove(this);
+ return r;
+ }
+ public Set<Oseba[]> staroste () {
+ return this.staroste(new HashSet<Stanovanje>());
+ }
+ private Set<Oseba[]> staroste (Set<Stanovanje> obiskani) {
+ Set<Oseba[]> r = new HashSet<Oseba[]>();
+ if (obiskani.contains(this))
+ return r;
+ r.add(new Oseba[]{this.starosta()});
+ obiskani.add(this);
+ if (this.sosedje[0] != null)
+ r.addAll(this.sosedje[0].staroste(obiskani));
+ if (this.sosedje[1] != null)
+ r.addAll(this.sosedje[1].staroste(obiskani));
+ if (this.sosedje[2] != null)
+ r.addAll(this.sosedje[2].staroste(obiskani));
+ if (this.sosedje[3] != null)
+ r.addAll(this.sosedje[3].staroste(obiskani));
+ // obiskani.remove(this);
return r;
}
}