multi-puzzle-solver 0.8.6__tar.gz → 0.8.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/PKG-INFO +15 -14
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/README.md +14 -13
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/multi_puzzle_solver.egg-info/PKG-INFO +15 -14
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/multi_puzzle_solver.egg-info/SOURCES.txt +2 -2
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/__init__.py +2 -2
- multi_puzzle_solver-0.8.6/tests/test_chess_sequence.py → multi_puzzle_solver-0.8.7/tests/test_chess_range.py +1 -1
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/pyproject.toml +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/setup.cfg +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/multi_puzzle_solver.egg-info/dependency_links.txt +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/multi_puzzle_solver.egg-info/requires.txt +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/multi_puzzle_solver.egg-info/top_level.txt +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/core/utils.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/core/utils_ortools.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/bridges/bridges.py +0 -0
- /multi_puzzle_solver-0.8.6/src/puzzle_solver/puzzles/chess_sequence/chess_sequence.py → /multi_puzzle_solver-0.8.7/src/puzzle_solver/puzzles/chess_range/chess_range.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/dominosa/dominosa.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/filling/filling.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/guess/guess.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/inertia/inertia.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/inertia/parse_map/parse_map.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/inertia/tsp.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/keen/keen.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/light_up/light_up.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/magnets/magnets.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/map/map.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/minesweeper/minesweeper.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/mosaic/mosaic.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/nonograms/nonograms.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/pearl/pearl.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/range/range.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/signpost/signpost.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/singles/singles.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/sudoku/sudoku.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/tents/tents.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/towers/towers.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/tracks/tracks.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/undead/undead.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/unruly/unruly.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_bridges.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_dominosa.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_filling.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_guess.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_inertia.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_keen.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_light_up.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_magnets.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_map.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_minesweeper.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_mosaic.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_nonograms.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_pearl.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_range.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_signpost.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_singles.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_sudoku.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_tents.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_towers.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_tracks.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_undead.py +0 -0
- {multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/tests/test_unruly.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: multi-puzzle-solver
|
3
|
-
Version: 0.8.
|
3
|
+
Version: 0.8.7
|
4
4
|
Summary: Efficient solvers for numerous popular and esoteric logic puzzles using CP-SAT
|
5
5
|
Author: Ar-Kareem
|
6
6
|
Project-URL: Homepage, https://github.com/Ar-Kareem/puzzle_solver
|
@@ -206,8 +206,8 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
206
206
|
</a>
|
207
207
|
</td>
|
208
208
|
<td align="center">
|
209
|
-
<a href="#chess-
|
210
|
-
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/
|
209
|
+
<a href="#chess-range-puzzle-type-23"><b>Chess Range</b><br><br>
|
210
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_unsolved.png" alt="Chess range" height="120">
|
211
211
|
</a>
|
212
212
|
</td>
|
213
213
|
|
@@ -249,7 +249,7 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
249
249
|
- [Bridges (Puzzle Type #20)](#bridges-puzzle-type-20)
|
250
250
|
- [Inertia (Puzzle Type #21)](#inertia-puzzle-type-21)
|
251
251
|
- [Guess (Puzzle Type #22)](#guess-puzzle-type-22)
|
252
|
-
- [Chess
|
252
|
+
- [Chess Range(Puzzle Type #23)](#chess-rangepuzzle-type-23)
|
253
253
|
- [Why SAT / CP-SAT?](#why-sat--cp-sat)
|
254
254
|
- [What’s Inside](#whats-inside)
|
255
255
|
- [Testing](#testing)
|
@@ -1935,7 +1935,7 @@ In the case when there's only one possible choice left, the solver will inform y
|
|
1935
1935
|
|
1936
1936
|
---
|
1937
1937
|
|
1938
|
-
## Chess
|
1938
|
+
## Chess Range(Puzzle Type #23)
|
1939
1939
|
|
1940
1940
|
* [**Play online**](https://www.puzzle-chess.com/chess-ranger-11/)
|
1941
1941
|
|
@@ -1944,24 +1944,25 @@ In the case when there's only one possible choice left, the solver will inform y
|
|
1944
1944
|
<details>
|
1945
1945
|
<summary><strong>Rules</strong></summary>
|
1946
1946
|
|
1947
|
-
You are given a chess board with $N$ pieces distributed on it. Your aim is to make $N-1$
|
1947
|
+
You are given a chess board with $N$ pieces distributed on it. Your aim is to make $N-1$ range of moves where each move is a legal chess move and captures another piece.
|
1948
1948
|
|
1949
|
-
|
1950
|
-
|
1951
|
-
|
1949
|
+
- Pieces move as standard chess pieces.
|
1950
|
+
- You can perform only capture moves. A move that does not capture another piece is not allowed.
|
1951
|
+
- You are allowed to capture the king.
|
1952
|
+
- The goal is to end up with one single piece on the board.
|
1952
1953
|
|
1953
1954
|
</details>
|
1954
1955
|
|
1955
1956
|
**Unsolved puzzle**
|
1956
1957
|
|
1957
|
-
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/
|
1958
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_unsolved.png" alt="Chess range unsolved" width="500">
|
1958
1959
|
|
1959
1960
|
Code to utilize this package and solve the puzzle:
|
1960
1961
|
|
1961
1962
|
(Note that this puzzle does not typically have a unique solution. Thus, we specify here that we only want the first valid solution that the solver finds.)
|
1962
1963
|
|
1963
1964
|
```python
|
1964
|
-
from puzzle_solver import
|
1965
|
+
from puzzle_solver import chess_range_solver as solver
|
1965
1966
|
# algebraic notation
|
1966
1967
|
board = ['Qe7', 'Nc6', 'Kb6', 'Pb5', 'Nf5', 'Pg4', 'Rb3', 'Bc3', 'Pd3', 'Pc2', 'Rg2']
|
1967
1968
|
binst = solver.Board(board)
|
@@ -1981,7 +1982,7 @@ Time taken: 6.27 seconds
|
|
1981
1982
|
|
1982
1983
|
**Solved puzzle**
|
1983
1984
|
|
1984
|
-
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/
|
1985
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_solved.png" alt="Chess range solved" width="500">
|
1985
1986
|
|
1986
1987
|
---
|
1987
1988
|
|
@@ -2025,7 +2026,7 @@ Each sub directory in `src/puzzle_solver/puzzles/` targets a different puzzle ty
|
|
2025
2026
|
* `unruly` — Unruly (no triples + balance). ([Chapter 38][15])
|
2026
2027
|
* `tracks` — Tracks (connected components). ([Chapter 40][16])
|
2027
2028
|
* `mosaic` — Mosaic (Tapa-like tiling). ([Chapter 42][17])
|
2028
|
-
* `
|
2029
|
+
* `chess_range` — Chess Range (chess moves). ([Puzzle-Chess][23])
|
2029
2030
|
|
2030
2031
|
---
|
2031
2032
|
|
@@ -2088,4 +2089,4 @@ Issues and PRs welcome!
|
|
2088
2089
|
[15]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/unruly "puzzle_solver/src/puzzle_solver/puzzles/unruly at master · Ar-Kareem/puzzle_solver · GitHub"
|
2089
2090
|
[16]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/tracks "puzzle_solver/src/puzzle_solver/puzzles/tracks at master · Ar-Kareem/puzzle_solver · GitHub"
|
2090
2091
|
[17]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/mosaic "puzzle_solver/src/puzzle_solver/puzzles/mosaic at master · Ar-Kareem/puzzle_solver · GitHub"
|
2091
|
-
[23]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/
|
2092
|
+
[23]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/chess_range "puzzle_solver/src/puzzle_solver/puzzles/chess_range at master · Ar-Kareem/puzzle_solver · GitHub"
|
@@ -180,8 +180,8 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
180
180
|
</a>
|
181
181
|
</td>
|
182
182
|
<td align="center">
|
183
|
-
<a href="#chess-
|
184
|
-
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/
|
183
|
+
<a href="#chess-range-puzzle-type-23"><b>Chess Range</b><br><br>
|
184
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_unsolved.png" alt="Chess range" height="120">
|
185
185
|
</a>
|
186
186
|
</td>
|
187
187
|
|
@@ -223,7 +223,7 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
223
223
|
- [Bridges (Puzzle Type #20)](#bridges-puzzle-type-20)
|
224
224
|
- [Inertia (Puzzle Type #21)](#inertia-puzzle-type-21)
|
225
225
|
- [Guess (Puzzle Type #22)](#guess-puzzle-type-22)
|
226
|
-
- [Chess
|
226
|
+
- [Chess Range(Puzzle Type #23)](#chess-rangepuzzle-type-23)
|
227
227
|
- [Why SAT / CP-SAT?](#why-sat--cp-sat)
|
228
228
|
- [What’s Inside](#whats-inside)
|
229
229
|
- [Testing](#testing)
|
@@ -1909,7 +1909,7 @@ In the case when there's only one possible choice left, the solver will inform y
|
|
1909
1909
|
|
1910
1910
|
---
|
1911
1911
|
|
1912
|
-
## Chess
|
1912
|
+
## Chess Range(Puzzle Type #23)
|
1913
1913
|
|
1914
1914
|
* [**Play online**](https://www.puzzle-chess.com/chess-ranger-11/)
|
1915
1915
|
|
@@ -1918,24 +1918,25 @@ In the case when there's only one possible choice left, the solver will inform y
|
|
1918
1918
|
<details>
|
1919
1919
|
<summary><strong>Rules</strong></summary>
|
1920
1920
|
|
1921
|
-
You are given a chess board with $N$ pieces distributed on it. Your aim is to make $N-1$
|
1921
|
+
You are given a chess board with $N$ pieces distributed on it. Your aim is to make $N-1$ range of moves where each move is a legal chess move and captures another piece.
|
1922
1922
|
|
1923
|
-
|
1924
|
-
|
1925
|
-
|
1923
|
+
- Pieces move as standard chess pieces.
|
1924
|
+
- You can perform only capture moves. A move that does not capture another piece is not allowed.
|
1925
|
+
- You are allowed to capture the king.
|
1926
|
+
- The goal is to end up with one single piece on the board.
|
1926
1927
|
|
1927
1928
|
</details>
|
1928
1929
|
|
1929
1930
|
**Unsolved puzzle**
|
1930
1931
|
|
1931
|
-
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/
|
1932
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_unsolved.png" alt="Chess range unsolved" width="500">
|
1932
1933
|
|
1933
1934
|
Code to utilize this package and solve the puzzle:
|
1934
1935
|
|
1935
1936
|
(Note that this puzzle does not typically have a unique solution. Thus, we specify here that we only want the first valid solution that the solver finds.)
|
1936
1937
|
|
1937
1938
|
```python
|
1938
|
-
from puzzle_solver import
|
1939
|
+
from puzzle_solver import chess_range_solver as solver
|
1939
1940
|
# algebraic notation
|
1940
1941
|
board = ['Qe7', 'Nc6', 'Kb6', 'Pb5', 'Nf5', 'Pg4', 'Rb3', 'Bc3', 'Pd3', 'Pc2', 'Rg2']
|
1941
1942
|
binst = solver.Board(board)
|
@@ -1955,7 +1956,7 @@ Time taken: 6.27 seconds
|
|
1955
1956
|
|
1956
1957
|
**Solved puzzle**
|
1957
1958
|
|
1958
|
-
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/
|
1959
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_solved.png" alt="Chess range solved" width="500">
|
1959
1960
|
|
1960
1961
|
---
|
1961
1962
|
|
@@ -1999,7 +2000,7 @@ Each sub directory in `src/puzzle_solver/puzzles/` targets a different puzzle ty
|
|
1999
2000
|
* `unruly` — Unruly (no triples + balance). ([Chapter 38][15])
|
2000
2001
|
* `tracks` — Tracks (connected components). ([Chapter 40][16])
|
2001
2002
|
* `mosaic` — Mosaic (Tapa-like tiling). ([Chapter 42][17])
|
2002
|
-
* `
|
2003
|
+
* `chess_range` — Chess Range (chess moves). ([Puzzle-Chess][23])
|
2003
2004
|
|
2004
2005
|
---
|
2005
2006
|
|
@@ -2062,4 +2063,4 @@ Issues and PRs welcome!
|
|
2062
2063
|
[15]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/unruly "puzzle_solver/src/puzzle_solver/puzzles/unruly at master · Ar-Kareem/puzzle_solver · GitHub"
|
2063
2064
|
[16]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/tracks "puzzle_solver/src/puzzle_solver/puzzles/tracks at master · Ar-Kareem/puzzle_solver · GitHub"
|
2064
2065
|
[17]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/mosaic "puzzle_solver/src/puzzle_solver/puzzles/mosaic at master · Ar-Kareem/puzzle_solver · GitHub"
|
2065
|
-
[23]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/
|
2066
|
+
[23]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/chess_range "puzzle_solver/src/puzzle_solver/puzzles/chess_range at master · Ar-Kareem/puzzle_solver · GitHub"
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/multi_puzzle_solver.egg-info/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: multi-puzzle-solver
|
3
|
-
Version: 0.8.
|
3
|
+
Version: 0.8.7
|
4
4
|
Summary: Efficient solvers for numerous popular and esoteric logic puzzles using CP-SAT
|
5
5
|
Author: Ar-Kareem
|
6
6
|
Project-URL: Homepage, https://github.com/Ar-Kareem/puzzle_solver
|
@@ -206,8 +206,8 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
206
206
|
</a>
|
207
207
|
</td>
|
208
208
|
<td align="center">
|
209
|
-
<a href="#chess-
|
210
|
-
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/
|
209
|
+
<a href="#chess-range-puzzle-type-23"><b>Chess Range</b><br><br>
|
210
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_unsolved.png" alt="Chess range" height="120">
|
211
211
|
</a>
|
212
212
|
</td>
|
213
213
|
|
@@ -249,7 +249,7 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
249
249
|
- [Bridges (Puzzle Type #20)](#bridges-puzzle-type-20)
|
250
250
|
- [Inertia (Puzzle Type #21)](#inertia-puzzle-type-21)
|
251
251
|
- [Guess (Puzzle Type #22)](#guess-puzzle-type-22)
|
252
|
-
- [Chess
|
252
|
+
- [Chess Range(Puzzle Type #23)](#chess-rangepuzzle-type-23)
|
253
253
|
- [Why SAT / CP-SAT?](#why-sat--cp-sat)
|
254
254
|
- [What’s Inside](#whats-inside)
|
255
255
|
- [Testing](#testing)
|
@@ -1935,7 +1935,7 @@ In the case when there's only one possible choice left, the solver will inform y
|
|
1935
1935
|
|
1936
1936
|
---
|
1937
1937
|
|
1938
|
-
## Chess
|
1938
|
+
## Chess Range(Puzzle Type #23)
|
1939
1939
|
|
1940
1940
|
* [**Play online**](https://www.puzzle-chess.com/chess-ranger-11/)
|
1941
1941
|
|
@@ -1944,24 +1944,25 @@ In the case when there's only one possible choice left, the solver will inform y
|
|
1944
1944
|
<details>
|
1945
1945
|
<summary><strong>Rules</strong></summary>
|
1946
1946
|
|
1947
|
-
You are given a chess board with $N$ pieces distributed on it. Your aim is to make $N-1$
|
1947
|
+
You are given a chess board with $N$ pieces distributed on it. Your aim is to make $N-1$ range of moves where each move is a legal chess move and captures another piece.
|
1948
1948
|
|
1949
|
-
|
1950
|
-
|
1951
|
-
|
1949
|
+
- Pieces move as standard chess pieces.
|
1950
|
+
- You can perform only capture moves. A move that does not capture another piece is not allowed.
|
1951
|
+
- You are allowed to capture the king.
|
1952
|
+
- The goal is to end up with one single piece on the board.
|
1952
1953
|
|
1953
1954
|
</details>
|
1954
1955
|
|
1955
1956
|
**Unsolved puzzle**
|
1956
1957
|
|
1957
|
-
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/
|
1958
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_unsolved.png" alt="Chess range unsolved" width="500">
|
1958
1959
|
|
1959
1960
|
Code to utilize this package and solve the puzzle:
|
1960
1961
|
|
1961
1962
|
(Note that this puzzle does not typically have a unique solution. Thus, we specify here that we only want the first valid solution that the solver finds.)
|
1962
1963
|
|
1963
1964
|
```python
|
1964
|
-
from puzzle_solver import
|
1965
|
+
from puzzle_solver import chess_range_solver as solver
|
1965
1966
|
# algebraic notation
|
1966
1967
|
board = ['Qe7', 'Nc6', 'Kb6', 'Pb5', 'Nf5', 'Pg4', 'Rb3', 'Bc3', 'Pd3', 'Pc2', 'Rg2']
|
1967
1968
|
binst = solver.Board(board)
|
@@ -1981,7 +1982,7 @@ Time taken: 6.27 seconds
|
|
1981
1982
|
|
1982
1983
|
**Solved puzzle**
|
1983
1984
|
|
1984
|
-
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/
|
1985
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_solved.png" alt="Chess range solved" width="500">
|
1985
1986
|
|
1986
1987
|
---
|
1987
1988
|
|
@@ -2025,7 +2026,7 @@ Each sub directory in `src/puzzle_solver/puzzles/` targets a different puzzle ty
|
|
2025
2026
|
* `unruly` — Unruly (no triples + balance). ([Chapter 38][15])
|
2026
2027
|
* `tracks` — Tracks (connected components). ([Chapter 40][16])
|
2027
2028
|
* `mosaic` — Mosaic (Tapa-like tiling). ([Chapter 42][17])
|
2028
|
-
* `
|
2029
|
+
* `chess_range` — Chess Range (chess moves). ([Puzzle-Chess][23])
|
2029
2030
|
|
2030
2031
|
---
|
2031
2032
|
|
@@ -2088,4 +2089,4 @@ Issues and PRs welcome!
|
|
2088
2089
|
[15]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/unruly "puzzle_solver/src/puzzle_solver/puzzles/unruly at master · Ar-Kareem/puzzle_solver · GitHub"
|
2089
2090
|
[16]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/tracks "puzzle_solver/src/puzzle_solver/puzzles/tracks at master · Ar-Kareem/puzzle_solver · GitHub"
|
2090
2091
|
[17]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/mosaic "puzzle_solver/src/puzzle_solver/puzzles/mosaic at master · Ar-Kareem/puzzle_solver · GitHub"
|
2091
|
-
[23]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/
|
2092
|
+
[23]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/chess_range "puzzle_solver/src/puzzle_solver/puzzles/chess_range at master · Ar-Kareem/puzzle_solver · GitHub"
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/multi_puzzle_solver.egg-info/SOURCES.txt
RENAMED
@@ -9,7 +9,7 @@ src/puzzle_solver/__init__.py
|
|
9
9
|
src/puzzle_solver/core/utils.py
|
10
10
|
src/puzzle_solver/core/utils_ortools.py
|
11
11
|
src/puzzle_solver/puzzles/bridges/bridges.py
|
12
|
-
src/puzzle_solver/puzzles/
|
12
|
+
src/puzzle_solver/puzzles/chess_range/chess_range.py
|
13
13
|
src/puzzle_solver/puzzles/dominosa/dominosa.py
|
14
14
|
src/puzzle_solver/puzzles/filling/filling.py
|
15
15
|
src/puzzle_solver/puzzles/guess/guess.py
|
@@ -34,7 +34,7 @@ src/puzzle_solver/puzzles/tracks/tracks.py
|
|
34
34
|
src/puzzle_solver/puzzles/undead/undead.py
|
35
35
|
src/puzzle_solver/puzzles/unruly/unruly.py
|
36
36
|
tests/test_bridges.py
|
37
|
-
tests/
|
37
|
+
tests/test_chess_range.py
|
38
38
|
tests/test_dominosa.py
|
39
39
|
tests/test_filling.py
|
40
40
|
tests/test_guess.py
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from puzzle_solver.puzzles.bridges import bridges as bridges_solver
|
2
|
-
from puzzle_solver.puzzles.
|
2
|
+
from puzzle_solver.puzzles.chess_range import chess_range as chess_range_solver
|
3
3
|
from puzzle_solver.puzzles.dominosa import dominosa as dominosa_solver
|
4
4
|
from puzzle_solver.puzzles.filling import filling as filling_solver
|
5
5
|
from puzzle_solver.puzzles.guess import guess as guess_solver
|
@@ -24,4 +24,4 @@ from puzzle_solver.puzzles.unruly import unruly as unruly_solver
|
|
24
24
|
|
25
25
|
from puzzle_solver.puzzles.inertia.parse_map.parse_map import main as inertia_image_parser
|
26
26
|
|
27
|
-
__version__ = '0.8.
|
27
|
+
__version__ = '0.8.7'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/core/utils_ortools.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/bridges/bridges.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/filling/filling.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/guess/guess.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/inertia/inertia.py
RENAMED
File without changes
|
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/inertia/tsp.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/keen/keen.py
RENAMED
File without changes
|
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/magnets/magnets.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/map/map.py
RENAMED
File without changes
|
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/mosaic/mosaic.py
RENAMED
File without changes
|
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/pearl/pearl.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/range/range.py
RENAMED
File without changes
|
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/singles/singles.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/sudoku/sudoku.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/tents/tents.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/towers/towers.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/tracks/tracks.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/undead/undead.py
RENAMED
File without changes
|
{multi_puzzle_solver-0.8.6 → multi_puzzle_solver-0.8.7}/src/puzzle_solver/puzzles/unruly/unruly.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|