mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-29 16:46:45 +01:00
inverse pairing function
This commit is contained in:
parent
abe9d9f5ac
commit
e039bbd56a
@ -83,6 +83,47 @@ public class PlotId {
|
|||||||
return this.x + ";" + this.y;
|
return this.x + ";" + this.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PlotId unpair(int hash) {
|
||||||
|
if (hash >= 0) {
|
||||||
|
if (hash % 2 == 0) {
|
||||||
|
// + +
|
||||||
|
hash /= 2;
|
||||||
|
int i = (int) (Math.abs(-1 + Math.sqrt(1 + 8 * hash)) / 2);
|
||||||
|
int idx = hash - ((i * (1 + i)) / 2);
|
||||||
|
int idy = ((i * (3 + i)) / 2) - hash;
|
||||||
|
return new PlotId(idx, idy);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// + -
|
||||||
|
hash -= 1;
|
||||||
|
hash /= 2;
|
||||||
|
int i = (int) (Math.abs(-1 + Math.sqrt(1 + 8 * hash)) / 2);
|
||||||
|
int idx = hash - ((i * (1 + i)) / 2);
|
||||||
|
int idy = ((i * (3 + i)) / 2) - hash;
|
||||||
|
return new PlotId(idx, -idy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (hash % 2 == 0) {
|
||||||
|
// - +
|
||||||
|
hash /= -2;
|
||||||
|
int i = (int) (Math.abs(-1 + Math.sqrt(1 + 8 * hash)) / 2);
|
||||||
|
int idx = hash - ((i * (1 + i)) / 2);
|
||||||
|
int idy = ((i * (3 + i)) / 2) - hash;
|
||||||
|
return new PlotId(-idx, idy);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// - -
|
||||||
|
hash += 1;
|
||||||
|
hash /= -2;
|
||||||
|
int i = (int) (Math.abs(-1 + Math.sqrt(1 + 8 * hash)) / 2);
|
||||||
|
int idx = hash - ((i * (1 + i)) / 2);
|
||||||
|
int idy = ((i * (3 + i)) / 2) - hash;
|
||||||
|
return new PlotId(-idx, -idy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
if (this.x >= 0) {
|
if (this.x >= 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user