diff options
author | Anton Luka Šijanec <anton@sijanec.eu> | 2023-12-19 23:47:39 +0100 |
---|---|---|
committer | Anton Luka Šijanec <anton@sijanec.eu> | 2023-12-19 23:47:39 +0100 |
commit | 9b8d284981fa0e0a3b4634fec9ae58b04ac10450 (patch) | |
tree | dc5e832547cd994dc2fdf3d7ec93065e3c35bac9 /šola/p1/dn/7/Stanovanje.java | |
parent | šola (diff) | |
download | r-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 '')
-rw-r--r-- | šola/p1/dn/7/Stanovanje.java | 40 |
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; } } |