Tracks
/
Scheme
/
Exercises
/
Queen Attack

# Queen Attack

Easy

## Instructions

Given the position of two queens on a chess board, indicate whether or not they are positioned so that they can attack each other.

In the game of chess, a queen can attack pieces which are on the same row, column, or diagonal.

A chessboard can be represented by an 8 by 8 array.

So if you're told the white queen is at (2, 3) and the black queen at (5, 6), then you'd know you've got a set-up like so:

``````_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ W _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ B _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
``````

You'd also be able to answer whether the queens can attack each other. In this case, that answer would be yes, they can, because both pieces share a diagonal.

### Track Specific Notes

For this track, each queen's position will be represented as a list containing the row and the column. You should assume all inputs are valid, there's no need to report errors.

### Running and testing your solutions

#### From the command line

Simply type `make chez` if you're using ChezScheme or `make guile` if you're using GNU Guile. Sometimes the name for the scheme binary on your system will differ from the defaults. When this is the case, you'll need to tell make by running `make chez chez=your-chez-binary` or `make guile guile=your-guile-binary`.

#### From a REPL

• Enter `(load "test.scm")` at the repl prompt.
• Develop your solution in `queen-attack.scm` reloading as you go.
• Run `(test)` to check your solution.

#### Failed Test Cases

If some of the test cases fail, you should see the failing input and the expected output. The failing input is presented as a list because the tests call your solution by `(apply queen-attack input-list)`. To learn more about `apply` see The Scheme Programming Language -- Chapter 5

### Source

J Dalbey's Programming Practice problems
Last updated 26 January 2023
Edit via GitHub