75 lines
1.4 KiB
Markdown
75 lines
1.4 KiB
Markdown
# Solitaire Chess Puzzle Generator
|
|
|
|
Goal: Generate 'hard' puzzles.
|
|
|
|
### Play a demo of the game [here](https://games.neophyte.me/sol_chess/)
|
|
|
|
## Install
|
|
|
|
- Install Rust from [here](https://www.rust-lang.org/tools/install).
|
|
- Run `cargo install --git https://github.com/cool-mist/sol_chess` to install the tool.
|
|
- This installs 2 binaries: `sol_chess` and `sol_cli`.
|
|
|
|
## Usage
|
|
|
|
- Run `sol_chess` to start a windowed GUI game.
|
|
- Run `sol_cli` to start the CLI tool.
|
|
|
|
## CLI Usage
|
|
|
|
- Generate a puzzle
|
|
|
|
```bash
|
|
$ sol_cli -g -n 6
|
|
Generating a puzzle with 6 pieces with a maximum of 5 solutions
|
|
Total attempts: 7
|
|
Total pieces placed: 71
|
|
Success pieces placed: 42
|
|
Total time (ms): 69
|
|
|
|
♘ . . .
|
|
|
|
♙ . ♖ .
|
|
|
|
♔ . ♘ ♙
|
|
|
|
. . . .
|
|
|
|
|
|
id: 202859896274992
|
|
```
|
|
|
|
- Solve a puzzle by ID, or by board string
|
|
|
|
```bash
|
|
$ sol_cli --solve 202859896274992
|
|
$ sol_cli --solve-board N...P.R.K.NP....
|
|
|
|
♘ . . .
|
|
|
|
♙ . ♖ .
|
|
|
|
♔ . ♘ ♙
|
|
|
|
. . . .
|
|
|
|
|
|
id: 202859896274992
|
|
|
|
Found 3 solutions
|
|
1. RxNc2
|
|
2. RxPd2
|
|
3. RxKa2
|
|
4. RxPa3
|
|
5. RxNa4
|
|
|
|
```
|
|
|
|
## Heuristics of current algorithm
|
|
|
|
1. About 6-7 pieces on the board.
|
|
2. Select pieces to place based on its weight.
|
|
3. Eg: Queen is too powerful, so it has lower weightage.
|
|
4. Eg: Knights are confusing. More knights.
|
|
|