#include <iostream>
using namespace std;
#include <iostream>
#include <string>
#include <cmath> // Pour les calculs nécessaires dans les méthodes comme "adjacent".
using coord = unsigned short; // Type représentant les coordonnées comme un entier court non signé.
// Classe position : représente une position (x, y) sur le plateau de jeu.
class position {
private:
coord x_coord; // Abscisse (x).
coord y_coord; // Ordonnée (y).
public:
// Constructeur : initialise une position avec les coordonnées x et y.
position(coord x = 0, coord y = 0) : x_coord(x), y_coord(y) {}
// Accesseur : retourne l'abscisse x.
coord x() const { return x_coord; }
// Accesseur : retourne l'ordonnée y.
coord y() const { return y_coord; }
// Méthode tostring : retourne une chaîne représentant la position.
// Exemple : si la position est (5, 2), la chaîne retournée sera "X5Y2".
std::string tostring() const {
return "X" + std::to_string(x_coord) + "Y" + std::to_string(y_coord);
}
// Méthode egale : vérifie si deux positions sont égales.
bool egale(const position& autre) const {
return x_coord == autre.x_coord && y_coord == autre.y_coord;
}
// Méthode adjacent : vérifie si deux positions sont adjacentes.
// Deux positions sont adjacentes si elles sont juste au-dessus, en dessous, à gauche ou à droite.
bool adjacent(const position& autre) const {
return (x_coord == autre.x_coord && std::abs((int)y_coord - (int)autre.y_coord) == 1) ||
(y_coord == autre.y_coord && std::abs((int)x_coord - (int)autre.x_coord) == 1);
}
};
int main() {
// your code goes here
return 0;
}