diff options
Diffstat (limited to 'šola/p1/dn')
-rw-r--r-- | šola/p1/dn/DN02_63230317.java | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/šola/p1/dn/DN02_63230317.java b/šola/p1/dn/DN02_63230317.java index 1eaa9de..95522d6 100644 --- a/šola/p1/dn/DN02_63230317.java +++ b/šola/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) { |