From b425194ea961540f48a0f539302f00b4e3108ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Tue, 31 Oct 2023 17:35:43 +0100 Subject: dn02 fix --- "\305\241ola/p1/dn/DN02_63230317.java" | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git "a/\305\241ola/p1/dn/DN02_63230317.java" "b/\305\241ola/p1/dn/DN02_63230317.java" index 1eaa9de..95522d6 100644 --- "a/\305\241ola/p1/dn/DN02_63230317.java" +++ "b/\305\241ola/p1/dn/DN02_63230317.java" @@ -7,34 +7,37 @@ public class DN01_63230317 { return tipka-vrstica(tipka)*vrstica(tipka)-vrstica(tipka); } public static int obroč (int tipka) { - return (int) Math.sqrt(tipka)/2; + return (int) Math.ceil(Math.floor(Math.sqrt(tipka))/2); + } + public static int prva (int obr) { + return (int) Math.pow(obr*2-1, 2); } public static int indeks (int tipka) { - return tipka-(obroč(tipka)*2)*(obroč(tipka)*2); + if (tipka == 0) + return 0; + return tipka - prva(obroč(tipka)); } public static int velikost (int obr) { - return ((obr+1)*2)*((obr+1)*2) - (obr*2)*(obr*2); + return prva(obr+1) - prva(obr); } public static int[] koordinate (int tipka) { int koord[] = { -obroč(tipka), - -obroč(tipka) + obroč(tipka) }; if (indeks(tipka) < velikost(obroč(tipka))/4) { koord[0] += indeks(tipka); - return koord; - } - if (indeks(tipka) < velikost(obroč(tipka))/2) { + } else if (indeks(tipka) < velikost(obroč(tipka))/2) { koord[0] += velikost(obroč(tipka))/4; - koord[1] += indeks(tipka); - return koord; - } - if (indeks(tipka) < 3*velikost(obroč(tipka))/4) { - koord[0] += velikost(obroč(tipka))/2-indeks(tipka); - koord[1] += velikost(obroč(tipka))/4; - return koord; + koord[1] -= indeks(tipka)-velikost(obroč(tipka))/4; + } else if (indeks(tipka) < 3*velikost(obroč(tipka))/4) { + koord[0] += velikost(obroč(tipka))/4-(3*velikost(obroč(tipka))/4-indeks(tipka)); + koord[1] -= velikost(obroč(tipka))/4; + } else + koord[1] -= velikost(obroč(tipka))-indeks(tipka); + if (System.getenv("DN02_DEBUG") != null) { + System.err.println("Tipka " + tipka + " je na koordinatah " + koord[0] + ", " + koord[1] + " ... obroč=" + obroč(tipka) + ", indeks=" + indeks(tipka) + ", velikost=" + velikost(obroč(tipka))); } - koord[1] += velikost(obroč(tipka))-indeks(tipka); return koord; } public static int razdalja (int d, int oblika, int začetek, int konec) { -- cgit v1.2.3