From 9b8d284981fa0e0a3b4634fec9ae58b04ac10450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Tue, 19 Dec 2023 23:47:39 +0100 Subject: dn07p1 --- "\305\241ola/p1/dn/7/Stanovanje.java" | 40 +++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 7 deletions(-) (limited to 'šola/p1/dn/7/Stanovanje.java') diff --git "a/\305\241ola/p1/dn/7/Stanovanje.java" "b/\305\241ola/p1/dn/7/Stanovanje.java" index 30db09f..cafc246 100644 --- "a/\305\241ola/p1/dn/7/Stanovanje.java" +++ "b/\305\241ola/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 soseščina() { - return this.soseščina(new HashSet()); + public Set soseščina() { // soseščina na globini pravzaprav, slabo sem prebral navodilo sprva + return this.soseščina(new HashSet(), 2); } - private Set soseščina(Set obiskani) { + public Set vsa_dosegljiva_stanovanja () { + return this.soseščina(new HashSet(), Integer.MAX_VALUE); + } + private Set soseščina(Set obiskani, int globina) { Set r = new HashSet(); - 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 staroste () { + return this.staroste(new HashSet()); + } + private Set staroste (Set obiskani) { + Set r = new HashSet(); + 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; } } -- cgit v1.2.3