You are given a 8*8 chess board. Along with the chess board there is a Bishop placed on board and its position is known. Position of Bishop is given in form of two digit integer where both digits are greater than 0 and less than 9 (like 67 denotes 6th row and 7 column). Now your task is to find the number of ways in which you can place a pawn safely on the board.
Input : Bishop's Position = 11 Output : Safe Positions = 56 Input : Bishop's Position = 44 Output : Safe Positions = 50
Brute Force Approach : One of the basic approach is to iterate through all the 64 possible positions on chess board and check whether that position is safe or not. This approach will require much more time.
Better Approach: As we know that movement of Bishop is in diagonal manner so from any position on the chess board a Bishop can move in both direction of both diagonals. So, all the positions which does not lie on the way of diagonal movement of the given Bishop are the safe positions.
Now our task is to find the maximum length in all possible four direction from the position of Bishop.
-> From any position a Bishop can move towards four corner that are (11, 18, 81, 88). So, we will try to find the find the maximum distance which the Bishop can move towards these corner.
Let position of bishop is ij then:
- Distance towards 11 = min (mod(1-i), mod(1-j) ).
- Distance towards 18 = min (mod(1-i), mod(8-j) ).
- Distance towards 81 = min (mod(8-i), mod(1-j) ).
- Distance towards 88 = min (mod(8-i), mod(8-j) ).
Beside all these four, one position at which Bishop is already placed is also not safe so total number of unsafe position is sum of above results + 1. and total number of safe position is 64 -(sum+1).
Safe Positions = 52
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Maximum non-attacking Rooks that can be placed on an N*N Chessboard
- Find all the queens attacking the king in a chessboard
- Queries to find longest subsequence having no smilar adjacent elements with updates
- Search an element in a Doubly Linked List
- Program to find the Nth natural number with exactly two bits set | Set 2
- Check if a non-contiguous subsequence same as the given subarray exists or not
- Find the next greater element in a Circular Array | Set 2
- Replace even-indexed characters of minimum number of substrings to convert a string to another
- Count subarrays having an equal count of 0s and 1s segregated
- Longest subarray in which all elements are smaller than K
- C program to count frequency of each element in an array
- Longest subsequence having maximum sum
- Farthest index that can be reached from the Kth index of given array by given operations
- Check if GCD of all Composite Numbers in an array divisible by K is a Fibonacci Number or not
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.