summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--šola/p1/dn/DN02_63230317.java33
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) {