Related Articles
Check if a Queen can attack a given cell on chessboard
• Difficulty Level : Easy
• Last Updated : 19 Mar, 2019

Given the position of the queen (qX, qY) and the opponent (oX, oY) on a chessboard. The task is to determine whether the queen can attack the opponent or not. Note that the queen can attack in the same row, same column and diagonally.

Example:

Input: qX = 4, qY = 5, oX = 6, oY = 7
Output: Yes
The queen can attack diagonally.

Input: qX = 1, qY = 1, oX = 3, oY = 2
Output: No

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• If qR = oR, it means that both the queen and the opponent are in the same row and the queen can attack the opponent.
• Similarly, if qC = oC then also the queen can attack the opponent as they both are in the same column.
• And for diagonals, if abs(qR – oR) = abs(qC – oC) i.e. queen can attack the opponent diagonally.

If all of the above conditions fail then the opponent is safe from the queen.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;`` ` `// Function that returns true if the queen``// can attack the opponent``bool` `canQueenAttack(``int` `qR, ``int` `qC, ``int` `oR, ``int` `oC)``{``    ``// If queen and the opponent are in the same row``    ``if` `(qR == oR)``        ``return` `true``;`` ` `    ``// If queen and the opponent are in the same column``    ``if` `(qC == oC)``        ``return` `true``;`` ` `    ``// If queen can attack diagonally``    ``if` `(``abs``(qR - oR) == ``abs``(qC - oC))``        ``return` `true``;`` ` `    ``// Opponent is safe``    ``return` `false``;``}`` ` `// Driver code``int` `main()``{``    ``int` `qR = 1, qC = 1;``    ``int` `oR = 3, oC = 2;``    ``if` `(canQueenAttack(qR, qC, oR, oC))``        ``cout << ``"Yes"``;``    ``else``        ``cout << ``"No"``;`` ` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GFG``{``     ` `// Function that returns true if the queen``// can attack the opponent``static` `boolean` `canQueenAttack(``int` `qR, ``int` `qC,``                                ``int` `oR, ``int` `oC)``{``    ``// If queen and the opponent``    ``// are in the same row``    ``if` `(qR == oR)``        ``return` `true``;`` ` `    ``// If queen and the opponent ``    ``// are in the same column``    ``if` `(qC == oC)``        ``return` `true``;`` ` `    ``// If queen can attack diagonally``    ``if` `(Math.abs(qR - oR) == Math.abs(qC - oC))``        ``return` `true``;`` ` `    ``// Opponent is safe``    ``return` `false``;``}`` ` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `qR = ``1``, qC = ``1``;``    ``int` `oR = ``3``, oC = ``2``;``    ``if` `(canQueenAttack(qR, qC, oR, oC))``        ``System.out.println(``"Yes"``);``    ``else``        ``System.out.println(``"No"``);``}``}`` ` `// This code is Contributed by Code_Mech.`

## Python3

 `# Python3 implementation of the approach `` ` `# Function that returns True if the ``# queen can attack the opponent ``def` `canQueenAttack(qR, qC, oR, oC): `` ` `    ``# If queen and the opponent are``    ``# in the same row ``    ``if` `qR ``=``=` `oR:``        ``return` `True`` ` `    ``# If queen and the opponent are ``    ``# in the same column ``    ``if` `qC ``=``=` `oC:``        ``return` `True`` ` `    ``# If queen can attack diagonally ``    ``if` `abs``(qR ``-` `oR) ``=``=` `abs``(qC ``-` `oC): ``        ``return` `True`` ` `    ``# Opponent is safe ``    ``return` `False`` ` `# Driver code ``if` `__name__ ``=``=` `"__main__"``: `` ` `    ``qR, qC ``=` `1``, ``1``    ``oR, oC ``=` `3``, ``2``    ``if` `canQueenAttack(qR, qC, oR, oC): ``        ``print``(``"Yes"``)``    ``else``:``        ``print``(``"No"``) ``     ` `# This code is contributed ``# by Rituraj Jain`

## C#

 `// C# implementation of the approach``using` `System;``class` `GFG``{``     ` `// Function that returns true if the queen``// can attack the opponent``static` `bool` `canQueenAttack(``int` `qR, ``int` `qC,``                                ``int` `oR, ``int` `oC)``{``    ``// If queen and the opponent``    ``// are in the same row``    ``if` `(qR == oR)``        ``return` `true``;`` ` `    ``// If queen and the opponent ``    ``// are in the same column``    ``if` `(qC == oC)``        ``return` `true``;`` ` `    ``// If queen can attack diagonally``    ``if` `(Math.Abs(qR - oR) == Math.Abs(qC - oC))``        ``return` `true``;`` ` `    ``// Opponent is safe``    ``return` `false``;``}`` ` `// Driver code``public` `static` `void` `Main()``{``    ``int` `qR = 1, qC = 1;``    ``int` `oR = 3, oC = 2;``    ``if` `(canQueenAttack(qR, qC, oR, oC))``        ``Console.WriteLine(``"Yes"``);``    ``else``        ``Console.WriteLine(``"No"``);``}``}`` ` `// This code is Contributed by Code_Mech.`

## PHP

 ``
Output:
```No
``` My Personal Notes arrow_drop_up