48 lines
947 B
Java
48 lines
947 B
Java
|
import lombok.*;
|
||
|
|
||
|
/** Définir une position. */
|
||
|
@Data @Value
|
||
|
public class Position {
|
||
|
public int x;
|
||
|
public int y;
|
||
|
|
||
|
// public Position(int x, int y) {
|
||
|
// this.x = x;
|
||
|
// this.y = y;
|
||
|
// // <(NO_TRACE)>// <(/NO_TRACE)>System.out.println("...appel à Position(" + x + "," + y + ")" + " --> " + this);
|
||
|
// System.out.println("...appel à Position(" + x + "," + y + ")" + " --> " + this);
|
||
|
// }
|
||
|
|
||
|
@Override
|
||
|
public String toString() {
|
||
|
return super.toString() + "(" + x + "," + y + ")";
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean equals(Object obj) {
|
||
|
Position other = (Position) obj;
|
||
|
return other.x == this.x && other.y == this.y;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public int hashCode() {
|
||
|
// bijection de Z dans N
|
||
|
int n, m;
|
||
|
if (this.x >= 0) {
|
||
|
n = 2 * this.x;
|
||
|
} else {
|
||
|
n = -2 * this.x - 1;
|
||
|
}
|
||
|
if (this.y >= 0) {
|
||
|
m = 2 * this.y;
|
||
|
} else {
|
||
|
m = -2 * this.y - 1;
|
||
|
}
|
||
|
|
||
|
// bijection de N² dans N
|
||
|
int h = (n+m)*(n+m+1)/2+m;
|
||
|
return h;
|
||
|
}
|
||
|
|
||
|
}
|