Bishops on a binge def safe_squares_bishops(n, bishops): A generalized n-by-n chessboard has been taken over by some bishops, each represented as a tuple (row, column) of the row and the column of the...



Bishops on a binge

def safe_squares_bishops(n, bishops):


A generalized n-by-n chessboard has been taken over by some bishops, each represented as a tuple (row, column) of the row and the column of the square the bishop stands on. Same as in the earlier version of this problem with rampaging rooks, the rows and columns are numbered from 0 to n - 1. Unlike a chess rook whose moves are axis-aligned, a chess bishop covers all squares that are on the same diagonal with that bishop arbitrarily far into any of the four diagonal compass

directions. Given the board size n and the list of bishops on that board, count the number of safe squares that are not covered by any bishop.


To determine whether two squares (r1, c1) and (r2, c2) are reachable from each other in one diagonal move, use abs(r1-r2) == abs(c1-c2) to check whether the horizontal distance between those squares equals their vertical distance, which is both necessary and sufficient for the squares to lie on the same diagonal. This way you don't need to write the essentially identical block of logic separately four times, but a single test can handle all four diagonals in one swoop.


Expected<br>result<br>bishops<br>10<br>100<br>4<br>[ (2, 3), (0, 1)]<br>11<br>8<br>[(1, 1), (3, 5), (7, 0), (7, 6)]<br>29<br>2<br>[(1, 1)]<br>6.<br>[ (0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5)]|18<br>100<br>[(row, (row*row) % 100) for row in range(100)]<br>6666<br>

Extracted text: Expected result bishops 10 100 4 [ (2, 3), (0, 1)] 11 8 [(1, 1), (3, 5), (7, 0), (7, 6)] 29 2 [(1, 1)] 6. [ (0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5)]|18 100 [(row, (row*row) % 100) for row in range(100)] 6666

Jun 10, 2022
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here