From b0324289066876915efb84a133eca039d8e8c8ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Sun, 17 Dec 2023 23:17:03 +0100 Subject: =?UTF-8?q?=C5=A1ola?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "\305\241ola/p1/dn/7/Stanovanje.java" | 95 +++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 "\305\241ola/p1/dn/7/Stanovanje.java" (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" new file mode 100644 index 0000000..30db09f --- /dev/null +++ "b/\305\241ola/p1/dn/7/Stanovanje.java" @@ -0,0 +1,95 @@ +import java.util.*; +public class Stanovanje { + public Oseba[] stanovalci; + private Stanovanje[] sosedje = {null, null, null, null}; + public Stanovanje(Oseba[] stanovalci) { + this.stanovalci = stanovalci; + } + public int steviloStanovalcev() { + return this.stanovalci.length; + } + public int steviloStarejsihOd(Oseba os) { + int r = 0; + for (int i = 0; i < this.stanovalci.length; i++) + if (this.stanovalci[i].jeStarejsaOd(os)) + r++; + return r; + } + public int[] mz() { + int mž[] = {0, 0}; + for (int i = 0; i < this.stanovalci.length; i++) + if (this.stanovalci[i].spol == 'M') + mž[0]++; + else + mž[1]++; + return mž; + } + public Oseba starosta() { + Oseba r = null; + for (int i = 0; i < this.stanovalci.length; i++) + if (r == null || this.stanovalci[i].jeStarejsaOd(r)) + r = this.stanovalci[i]; + return r; + } + public void nastaviSosede(Stanovanje levi, Stanovanje zgornji, + Stanovanje desni, Stanovanje spodnji) { + this.sosedje[0] = levi; + this.sosedje[1] = zgornji; + this.sosedje[2] = desni; + this.sosedje[3] = spodnji; + } + public Oseba starostaSosescine() { + Oseba r = this.starosta(); + for (int i = 0; i < this.sosedje.length; i++) { + if (this.sosedje[i] == null) + continue; + if (this.sosedje[i].starosta() == null) + continue; + if (this.sosedje[i].starosta().jeStarejsaOd(r)) + r = this.sosedje[i].starosta(); + } + return r; + } + public Oseba[] sosedjeSosedov() { + List r = new ArrayList(); + for (Stanovanje stanovanje : this.soseščina()) + r.addAll(Arrays.asList(stanovanje.stanovalci)); + return r.toArray(new Oseba[0]); + } + private Set soseščina() { + return this.soseščina(new HashSet()); + } + private Set soseščina(Set obiskani) { + Set r = new HashSet(); + if (obiskani.contains(this)) + return r; + r.addAll(Arrays.asList(this.sosedje)); + 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)); + obiskani.remove(this); + return r; + } + public Set pozicije () { + return this.pozicije(new HashSet(), 0, 0); + } + private Set pozicije (Set obiskani, int x, int y) { + Set r = new HashSet(); + if (obiskani.contains(this)) + return r; + r.add(new int[]{this.stanovalci.length, x, y}); + obiskani.add(this); + if (this.sosedje[0] != null) + r.addAll(this.sosedje[0].pozicije(obiskani, x-1, y)); + if (this.sosedje[1] != null) + r.addAll(this.sosedje[1].pozicije(obiskani, x, y+1)); + if (this.sosedje[2] != null) + 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); + return r; + } + } -- cgit v1.2.3