The Indian Engineer

Problem 3274 Check if Two Chessboard Squares Have the Same Color

Posted on 2 mins

Simulation Math

Problem Statement

Link - Problem 3274

Question

You are given two strings, coordinate1 and coordinate2, representing the coordinates of a square on an 8 x 8 chessboard.

Below is the chessboard for reference.

imgChessBoard

Return true if these two squares have the same color and false otherwise.

The coordinate will always represent a valid chessboard square. The coordinate will always have the letter first (indicating its column), and the number second (indicating its row).

Example 1

Input: coordinate1 = "a1", coordinate2 = "c3"

Output: true

Explanation:

Both squares are black.

Example 2

Input: coordinate1 = "a1", coordinate2 = "h3"

Output: false

Explanation:

Square "a1" is black and "h3" is white.

Constraints

- `coordinate1.length == coordinate2.length == 2`
- `'a' <= coordinate1[0], coordinate2[0] <= 'h'`
- `'1' <= coordinate1[1], coordinate2[1] <= '8'`

Solution

class Solution {
public:
    bool checkTwoChessboards(string c1, string c2) {
        int col1 = (c1[0] - 'a' + 1 + c1[1] - '0') % 2;

        int col2 = (c2[0] - 'a' + 1 + c2[1] - '0') % 2;

        return col1 == col2;
    }
};

Complexity Analysis

| Algorithm  | Time Complexity | Space Complexity |
| ---------- | --------------- | ---------------- |
| Simulation | O(1)            | O(1)             |

Explanation

1. Intuition

- From the board we can see that `a,c,e,g` are black and `b,d,f,h` are white.
- Similarly `1,3,5,7` are black and `2,4,6,8` are white.
- If we assign black as `0` and white as `1`
  then we can see that the sum of the column and row is `even` for black and `odd` for white.
- So given each cordinate, convert it into integer and then find remiander when divided by `2`.
- Then we need to compare the remainder of both the cordinates.

2. Implementation

- A cordinate is given in the form of `a1` where `a` is the column and `1` is the row.
- We need to convert the column and row into integer.
- intger value is calculated as `(column value+1) + row value`.
- Then we find the remainder when divided by `2`.
- We then compare the remainder of both the cordinates.
- Return `true` if both the remainders are same and `false` otherwise.