It is also worth to read connected article how to improve algorithm speed.
Problem to solve
The problem is to find all unique configurations of a set of normal chess pieces on a chess board with dimensions MxN where none of the pieces is in a position to take any of the others. Assume the colour of the piece does not matter, and that there are no pawns among the pieces.
Write a program which takes as input:
- The dimensions of the board: M, N
- The number of pieces of each type (King, Queen, Bishop, Rook and Knight) to try and place on the board.
As output, the program should list all the unique configurations to the console for which all of the pieces can be placed on the board without threatening each other.
What we want to achieve
Input: 3x3 board containing 2 Kings and 1 Rook.
Input: 4x4 board containing 2 Rooks and 4 Knights.
How to use app
Get solutions for board 3x3 1rook 2kings in REPL:
(chess-challenge.handler/get-solutions [3 3] '(:rook :king :king))
Run function chess-challenge.handler/-main as jar file.
Compile uberjar with command
Run jar file:
java -Xms4g -Xmx4g -jar target/uberjar/chess-challenge-0.1.0-SNAPSHOT-standalone.jar
-Xms4g -Xmx4g is not obligatory but it will increase performance.