По операції: нам, насправді, треба перевірити, чи однакова парність у номерів рядку і стовпця, тобто абсолютно строге рішення
bool is_black = (x % 2) == (y % 2);
//або
bool is_white = (x % 2) != (y % 2);
Звісно, можна звернути увагу, що операція ділення (а відтак і обчислення залишку) - довга, а парність у двійковій системі перевіряється останнім бітом:
bool is_black = (x & 1) == (y & 1);
bool is_white = (x & 1) != (y & 1);
але це потребує додаткових знань (хоча й не надто глибоких).
Оптимізація до стану (x^y)&1, звісно, можлива, але вже не так очевидна, так що потребує коментаря.