summaryrefslogtreecommitdiffstats
path: root/šola/p1/dn/7/Stanovanje.java
diff options
context:
space:
mode:
authorAnton Luka Šijanec <anton@sijanec.eu>2023-12-19 23:47:39 +0100
committerAnton Luka Šijanec <anton@sijanec.eu>2023-12-19 23:47:39 +0100
commit9b8d284981fa0e0a3b4634fec9ae58b04ac10450 (patch)
treedc5e832547cd994dc2fdf3d7ec93065e3c35bac9 /šola/p1/dn/7/Stanovanje.java
parentšola (diff)
downloadr-9b8d284981fa0e0a3b4634fec9ae58b04ac10450.tar
r-9b8d284981fa0e0a3b4634fec9ae58b04ac10450.tar.gz
r-9b8d284981fa0e0a3b4634fec9ae58b04ac10450.tar.bz2
r-9b8d284981fa0e0a3b4634fec9ae58b04ac10450.tar.lz
r-9b8d284981fa0e0a3b4634fec9ae58b04ac10450.tar.xz
r-9b8d284981fa0e0a3b4634fec9ae58b04ac10450.tar.zst
r-9b8d284981fa0e0a3b4634fec9ae58b04ac10450.zip
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;
}
}