multi-puzzle-solver 1.0.7__tar.gz → 1.0.9__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.
Potentially problematic release.
This version of multi-puzzle-solver might be problematic. Click here for more details.
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/PKG-INFO +94 -9
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/README.md +93 -8
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/multi_puzzle_solver.egg-info/PKG-INFO +94 -9
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/multi_puzzle_solver.egg-info/SOURCES.txt +2 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/__init__.py +3 -1
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/core/utils_visualizer.py +565 -561
- multi_puzzle_solver-1.0.9/src/puzzle_solver/puzzles/binairo/binairo.py +98 -0
- multi_puzzle_solver-1.0.9/src/puzzle_solver/puzzles/mathema_grids/mathema_grids.py +119 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/nonograms/nonograms_colored.py +220 -221
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/palisade/palisade.py +91 -91
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/tracks/tracks.py +1 -1
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_binairo.py +25 -0
- multi_puzzle_solver-1.0.9/tests/test_mathema_grids.py +106 -0
- multi_puzzle_solver-1.0.7/src/puzzle_solver/puzzles/binairo/binairo.py +0 -126
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/pyproject.toml +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/setup.cfg +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/multi_puzzle_solver.egg-info/dependency_links.txt +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/multi_puzzle_solver.egg-info/requires.txt +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/multi_puzzle_solver.egg-info/top_level.txt +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/core/utils.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/core/utils_ortools.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/abc_view/abc_view.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/aquarium/aquarium.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/battleships/battleships.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/binairo/binairo_plus.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/black_box/black_box.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/bridges/bridges.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/chess_range/chess_melee.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/chess_range/chess_range.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/chess_range/chess_solo.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/connect_the_dots/connect_the_dots.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/dominosa/dominosa.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/filling/filling.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/flip/flip.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/flood_it/flood_it.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/flood_it/parse_map/parse_map.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/galaxies/galaxies.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/galaxies/parse_map/parse_map.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/guess/guess.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/heyawake/heyawake.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/inertia/inertia.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/inertia/parse_map/parse_map.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/inertia/tsp.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/kakurasu/kakurasu.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/kakuro/kakuro.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/keen/keen.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/light_up/light_up.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/lits/lits.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/magnets/magnets.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/map/map.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/minesweeper/minesweeper.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/mosaic/mosaic.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/nonograms/nonograms.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/norinori/norinori.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/nurikabe/nurikabe.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/pearl/pearl.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/pipes/pipes.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/range/range.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/rectangles/rectangles.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/shakashaka/shakashaka.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/shingoki/shingoki.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/signpost/signpost.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/singles/singles.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/slant/parse_map/parse_map.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/slant/slant.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/slitherlink/slitherlink.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/star_battle/star_battle.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/star_battle/star_battle_shapeless.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/stitches/parse_map/parse_map.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/stitches/stitches.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/sudoku/sudoku.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/tapa/tapa.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/tents/tents.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/thermometers/thermometers.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/towers/towers.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/twiddle/twiddle.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/undead/undead.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/unequal/unequal.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/unruly/unruly.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/yin_yang/parse_map/parse_map.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/puzzles/yin_yang/yin_yang.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/puzzle_solver/utils/visualizer.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_abc_view.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_aquarium.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_battleships.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_binairo_plus.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_black_box.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_bridges.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_chess_melee.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_chess_range.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_chess_solo.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_connect_the_dots.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_dominosa.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_filling.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_flip.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_flood_it.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_galaxies.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_guess.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_heyawake.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_inertia.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_kakurasu.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_kakuro.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_keen.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_light_up.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_lits.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_magnets.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_map.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_minesweeper.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_mosaic.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_nonograms.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_nonograms_colored.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_norinori.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_nurikabe.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_palisade.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_pearl.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_pipes.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_range.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_rectangles.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_shakashaka.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_shingoki.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_signpost.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_singles.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_slant.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_slitherlink.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_star_battle.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_stitches.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_sudoku.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_tapa.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_tents.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_thermometers.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_towers.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_tracks.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_twiddle.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_undead.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_unequal.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_unruly.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_utils.py +0 -0
- {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/tests/test_yin_yang.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multi-puzzle-solver
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.9
|
|
4
4
|
Summary: Efficient solvers for countless (50+) types of puzzles (like Sudoku, Minesweeper, etc.) with a simple python API.
|
|
5
5
|
Author: Ar-Kareem
|
|
6
6
|
Project-URL: Homepage, https://github.com/Ar-Kareem/puzzle_solver
|
|
@@ -412,6 +412,11 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
|
412
412
|
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/abc_view_solved.png" alt="ABC View" width="140">
|
|
413
413
|
</a>
|
|
414
414
|
</td>
|
|
415
|
+
<td align="center">
|
|
416
|
+
<a href="#mathema-grids-puzzle-type-59"><b>Mathema Grids</b><br><br>
|
|
417
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_solved.png" alt="Mathema Grids" width="140">
|
|
418
|
+
</a>
|
|
419
|
+
</td>
|
|
415
420
|
</tr>
|
|
416
421
|
</table>
|
|
417
422
|
|
|
@@ -485,6 +490,7 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
|
485
490
|
- [Connect the Dots (Puzzle Type #56)](#connect-the-dots-puzzle-type-56)
|
|
486
491
|
- [Nonograms Colored (Puzzle Type #57)](#nonograms-colored-puzzle-type-57)
|
|
487
492
|
- [ABC View (Puzzle Type #58)](#abc-view-puzzle-type-58)
|
|
493
|
+
- [Mathema Grids (Puzzle Type #59)](#mathema-grids-puzzle-type-59)
|
|
488
494
|
- [Why SAT / CP-SAT?](#why-sat--cp-sat)
|
|
489
495
|
- [Testing](#testing)
|
|
490
496
|
- [Contributing](#contributing)
|
|
@@ -604,7 +610,15 @@ Time taken: 0.04 seconds
|
|
|
604
610
|
|
|
605
611
|
## Sudoku (Puzzle Type #2)
|
|
606
612
|
|
|
607
|
-
Also known as Number Place and Solo.
|
|
613
|
+
Also known as Number Place and Solo.
|
|
614
|
+
|
|
615
|
+
The code can:
|
|
616
|
+
|
|
617
|
+
1. Solve arbitrarily sized valid board sizes, thus can be used to solve:
|
|
618
|
+
- Hex Sudoku (a 16x16 variant)
|
|
619
|
+
- Kidoku (a kid-friendly sudoku variant)
|
|
620
|
+
2. Solve the ["Sandwich" sudoku variant](https://dkmgames.com/SandwichSudoku/) using the optional parameter `sandwich={'side': [...], 'bottom': [...]}`
|
|
621
|
+
3. Solve the ["Sudoku-X" variant](https://www.sudopedia.org/wiki/Sudoku-X) using the optional parameter `unique_diagonal=True`
|
|
608
622
|
|
|
609
623
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/solo.html)
|
|
610
624
|
|
|
@@ -629,12 +643,6 @@ You are given some of the numbers as clues; your aim is to place the rest of the
|
|
|
629
643
|
|
|
630
644
|
Code to utilize this package and solve the puzzle:
|
|
631
645
|
|
|
632
|
-
Note:
|
|
633
|
-
|
|
634
|
-
- The solver also supports solving the ["Sandwich" sudoku variant](https://dkmgames.com/SandwichSudoku/) through the optional parameter ``sandwich={'side': [...], 'bottom': [...] }``。
|
|
635
|
-
|
|
636
|
-
- The solver also supports solving the ["Sudoku-X" variant](https://www.sudopedia.org/wiki/Sudoku-X) through the optional parameter ``unique_diagonal=True``。
|
|
637
|
-
|
|
638
646
|
```python
|
|
639
647
|
import numpy as np
|
|
640
648
|
from puzzle_solver import sudoku_solver as solver
|
|
@@ -1099,7 +1107,7 @@ Time taken: 0.15 seconds
|
|
|
1099
1107
|
|
|
1100
1108
|
## Keen (Puzzle Type #8)
|
|
1101
1109
|
|
|
1102
|
-
Also known as KenKen or
|
|
1110
|
+
Also known as KenKen, CalcuDoku, Inkies, or Inky.
|
|
1103
1111
|
|
|
1104
1112
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/keen.html)
|
|
1105
1113
|
|
|
@@ -4037,6 +4045,8 @@ Applying the solution to the puzzle visually:
|
|
|
4037
4045
|
|
|
4038
4046
|
## Binairo (Puzzle Type #41)
|
|
4039
4047
|
|
|
4048
|
+
Also known as Takuzu, Binero, Tohu-Wa-Vohu (Formless and Empty), Eins und Zwei (One and Two), Binary Puzzles, Binoxxo, Binox, Zernero, Tic-Tac-Logic, and Sudoku Binary.
|
|
4049
|
+
|
|
4040
4050
|
* [**Play online**](https://www.puzzle-binairo.com)
|
|
4041
4051
|
|
|
4042
4052
|
* [**Solver Code**][41]
|
|
@@ -5862,6 +5872,80 @@ Time taken: 0.01 seconds
|
|
|
5862
5872
|
|
|
5863
5873
|
---
|
|
5864
5874
|
|
|
5875
|
+
## Mathema Grids (Puzzle Type #59)
|
|
5876
|
+
|
|
5877
|
+
* [**Play online**](https://www.brainbashers.com/showmathemagrids.asp)
|
|
5878
|
+
|
|
5879
|
+
* [**Solver Code**][59]
|
|
5880
|
+
|
|
5881
|
+
<details>
|
|
5882
|
+
<summary><strong>Rules</strong></summary>
|
|
5883
|
+
|
|
5884
|
+
Complete the grid using all of the numbers from 1 to 9.
|
|
5885
|
+
When completed, all of the sums must be correct.
|
|
5886
|
+
The sums are solved strictly from left to right, and top to bottom.
|
|
5887
|
+
The normal order of mathematical operations is ignored.
|
|
5888
|
+
For example, 2 + 5 x 9 is calculated as (2 + 5) x 9 = 63.
|
|
5889
|
+
÷ 1 doesn't appear in the puzzle.
|
|
5890
|
+
x 1 doesn't appear in the puzzle (although there might be 1 x).
|
|
5891
|
+
At no point will any calculation go below zero, or become fractional.
|
|
5892
|
+
|
|
5893
|
+
</details>
|
|
5894
|
+
|
|
5895
|
+
**Unsolved puzzle**
|
|
5896
|
+
|
|
5897
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_unsolved.png" alt="Mathema Grids unsolved" width="500">
|
|
5898
|
+
|
|
5899
|
+
Code to utilize this package and solve the puzzle:
|
|
5900
|
+
|
|
5901
|
+
```python
|
|
5902
|
+
import numpy as np
|
|
5903
|
+
from puzzle_solver import mathema_grids_solver as solver
|
|
5904
|
+
board = np.array([
|
|
5905
|
+
[' ', '+', ' ', '-', ' ', '=', '4'],
|
|
5906
|
+
['+', ' ', '+', ' ', '*', ' ', ' '],
|
|
5907
|
+
[' ', '*', ' ', '/', ' ', '=', '3'],
|
|
5908
|
+
['*', ' ', '*', ' ', '+', ' ', ' '],
|
|
5909
|
+
[' ', '*', '2', '-', ' ', '=', '2'],
|
|
5910
|
+
['=', ' ', '=', ' ', '=', ' ', ' '],
|
|
5911
|
+
['24', ' ', '32', ' ', '30', ' ', ' '],
|
|
5912
|
+
])
|
|
5913
|
+
binst = solver.Board(board=board, digits=[1, 2, 3, 4, 5, 6, 7, 8, 9])
|
|
5914
|
+
solutions = binst.solve_and_print()
|
|
5915
|
+
```
|
|
5916
|
+
|
|
5917
|
+
**Script Output**
|
|
5918
|
+
|
|
5919
|
+
```python
|
|
5920
|
+
Solution found
|
|
5921
|
+
|
|
5922
|
+
0 1 2 3 4 5 6
|
|
5923
|
+
┌───┬───┬───┬───┬───┬───┬───┐
|
|
5924
|
+
0│ 5 │ + │ 7 │ - │ 8 │ = │ 4 │
|
|
5925
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5926
|
+
1│ + │ │ + │ │ * │ │ │
|
|
5927
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5928
|
+
2│ 1 │ * │ 9 │ / │ 3 │ = │ 3 │
|
|
5929
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5930
|
+
3│ * │ │ * │ │ + │ │ │
|
|
5931
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5932
|
+
4│ 4 │ * │ 2 │ - │ 6 │ = │ 2 │
|
|
5933
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5934
|
+
5│ = │ │ = │ │ = │ │ │
|
|
5935
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5936
|
+
6│24 │ │32 │ │30 │ │ │
|
|
5937
|
+
└───┴───┴───┴───┴───┴───┴───┘
|
|
5938
|
+
Solutions found: 1
|
|
5939
|
+
status: OPTIMAL
|
|
5940
|
+
Time taken: 0.00 seconds
|
|
5941
|
+
```
|
|
5942
|
+
|
|
5943
|
+
**Solved puzzle**
|
|
5944
|
+
|
|
5945
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_solved.png" alt="Mathema Grids solved" width="500">
|
|
5946
|
+
|
|
5947
|
+
---
|
|
5948
|
+
|
|
5865
5949
|
---
|
|
5866
5950
|
|
|
5867
5951
|
## Why SAT / CP-SAT?
|
|
@@ -5971,3 +6055,4 @@ Issues and PRs welcome!
|
|
|
5971
6055
|
[56]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/connect_the_dots "puzzle_solver/src/puzzle_solver/puzzles/connect_the_dots at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5972
6056
|
[57]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/nonograms "puzzle_solver/src/puzzle_solver/puzzles/nonograms at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5973
6057
|
[58]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/abc_view "puzzle_solver/src/puzzle_solver/puzzles/abc_view at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
6058
|
+
[59]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/mathema_grids "puzzle_solver/src/puzzle_solver/puzzles/mathema_grids at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
@@ -386,6 +386,11 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
|
386
386
|
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/abc_view_solved.png" alt="ABC View" width="140">
|
|
387
387
|
</a>
|
|
388
388
|
</td>
|
|
389
|
+
<td align="center">
|
|
390
|
+
<a href="#mathema-grids-puzzle-type-59"><b>Mathema Grids</b><br><br>
|
|
391
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_solved.png" alt="Mathema Grids" width="140">
|
|
392
|
+
</a>
|
|
393
|
+
</td>
|
|
389
394
|
</tr>
|
|
390
395
|
</table>
|
|
391
396
|
|
|
@@ -459,6 +464,7 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
|
459
464
|
- [Connect the Dots (Puzzle Type #56)](#connect-the-dots-puzzle-type-56)
|
|
460
465
|
- [Nonograms Colored (Puzzle Type #57)](#nonograms-colored-puzzle-type-57)
|
|
461
466
|
- [ABC View (Puzzle Type #58)](#abc-view-puzzle-type-58)
|
|
467
|
+
- [Mathema Grids (Puzzle Type #59)](#mathema-grids-puzzle-type-59)
|
|
462
468
|
- [Why SAT / CP-SAT?](#why-sat--cp-sat)
|
|
463
469
|
- [Testing](#testing)
|
|
464
470
|
- [Contributing](#contributing)
|
|
@@ -578,7 +584,15 @@ Time taken: 0.04 seconds
|
|
|
578
584
|
|
|
579
585
|
## Sudoku (Puzzle Type #2)
|
|
580
586
|
|
|
581
|
-
Also known as Number Place and Solo.
|
|
587
|
+
Also known as Number Place and Solo.
|
|
588
|
+
|
|
589
|
+
The code can:
|
|
590
|
+
|
|
591
|
+
1. Solve arbitrarily sized valid board sizes, thus can be used to solve:
|
|
592
|
+
- Hex Sudoku (a 16x16 variant)
|
|
593
|
+
- Kidoku (a kid-friendly sudoku variant)
|
|
594
|
+
2. Solve the ["Sandwich" sudoku variant](https://dkmgames.com/SandwichSudoku/) using the optional parameter `sandwich={'side': [...], 'bottom': [...]}`
|
|
595
|
+
3. Solve the ["Sudoku-X" variant](https://www.sudopedia.org/wiki/Sudoku-X) using the optional parameter `unique_diagonal=True`
|
|
582
596
|
|
|
583
597
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/solo.html)
|
|
584
598
|
|
|
@@ -603,12 +617,6 @@ You are given some of the numbers as clues; your aim is to place the rest of the
|
|
|
603
617
|
|
|
604
618
|
Code to utilize this package and solve the puzzle:
|
|
605
619
|
|
|
606
|
-
Note:
|
|
607
|
-
|
|
608
|
-
- The solver also supports solving the ["Sandwich" sudoku variant](https://dkmgames.com/SandwichSudoku/) through the optional parameter ``sandwich={'side': [...], 'bottom': [...] }``。
|
|
609
|
-
|
|
610
|
-
- The solver also supports solving the ["Sudoku-X" variant](https://www.sudopedia.org/wiki/Sudoku-X) through the optional parameter ``unique_diagonal=True``。
|
|
611
|
-
|
|
612
620
|
```python
|
|
613
621
|
import numpy as np
|
|
614
622
|
from puzzle_solver import sudoku_solver as solver
|
|
@@ -1073,7 +1081,7 @@ Time taken: 0.15 seconds
|
|
|
1073
1081
|
|
|
1074
1082
|
## Keen (Puzzle Type #8)
|
|
1075
1083
|
|
|
1076
|
-
Also known as KenKen or
|
|
1084
|
+
Also known as KenKen, CalcuDoku, Inkies, or Inky.
|
|
1077
1085
|
|
|
1078
1086
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/keen.html)
|
|
1079
1087
|
|
|
@@ -4011,6 +4019,8 @@ Applying the solution to the puzzle visually:
|
|
|
4011
4019
|
|
|
4012
4020
|
## Binairo (Puzzle Type #41)
|
|
4013
4021
|
|
|
4022
|
+
Also known as Takuzu, Binero, Tohu-Wa-Vohu (Formless and Empty), Eins und Zwei (One and Two), Binary Puzzles, Binoxxo, Binox, Zernero, Tic-Tac-Logic, and Sudoku Binary.
|
|
4023
|
+
|
|
4014
4024
|
* [**Play online**](https://www.puzzle-binairo.com)
|
|
4015
4025
|
|
|
4016
4026
|
* [**Solver Code**][41]
|
|
@@ -5836,6 +5846,80 @@ Time taken: 0.01 seconds
|
|
|
5836
5846
|
|
|
5837
5847
|
---
|
|
5838
5848
|
|
|
5849
|
+
## Mathema Grids (Puzzle Type #59)
|
|
5850
|
+
|
|
5851
|
+
* [**Play online**](https://www.brainbashers.com/showmathemagrids.asp)
|
|
5852
|
+
|
|
5853
|
+
* [**Solver Code**][59]
|
|
5854
|
+
|
|
5855
|
+
<details>
|
|
5856
|
+
<summary><strong>Rules</strong></summary>
|
|
5857
|
+
|
|
5858
|
+
Complete the grid using all of the numbers from 1 to 9.
|
|
5859
|
+
When completed, all of the sums must be correct.
|
|
5860
|
+
The sums are solved strictly from left to right, and top to bottom.
|
|
5861
|
+
The normal order of mathematical operations is ignored.
|
|
5862
|
+
For example, 2 + 5 x 9 is calculated as (2 + 5) x 9 = 63.
|
|
5863
|
+
÷ 1 doesn't appear in the puzzle.
|
|
5864
|
+
x 1 doesn't appear in the puzzle (although there might be 1 x).
|
|
5865
|
+
At no point will any calculation go below zero, or become fractional.
|
|
5866
|
+
|
|
5867
|
+
</details>
|
|
5868
|
+
|
|
5869
|
+
**Unsolved puzzle**
|
|
5870
|
+
|
|
5871
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_unsolved.png" alt="Mathema Grids unsolved" width="500">
|
|
5872
|
+
|
|
5873
|
+
Code to utilize this package and solve the puzzle:
|
|
5874
|
+
|
|
5875
|
+
```python
|
|
5876
|
+
import numpy as np
|
|
5877
|
+
from puzzle_solver import mathema_grids_solver as solver
|
|
5878
|
+
board = np.array([
|
|
5879
|
+
[' ', '+', ' ', '-', ' ', '=', '4'],
|
|
5880
|
+
['+', ' ', '+', ' ', '*', ' ', ' '],
|
|
5881
|
+
[' ', '*', ' ', '/', ' ', '=', '3'],
|
|
5882
|
+
['*', ' ', '*', ' ', '+', ' ', ' '],
|
|
5883
|
+
[' ', '*', '2', '-', ' ', '=', '2'],
|
|
5884
|
+
['=', ' ', '=', ' ', '=', ' ', ' '],
|
|
5885
|
+
['24', ' ', '32', ' ', '30', ' ', ' '],
|
|
5886
|
+
])
|
|
5887
|
+
binst = solver.Board(board=board, digits=[1, 2, 3, 4, 5, 6, 7, 8, 9])
|
|
5888
|
+
solutions = binst.solve_and_print()
|
|
5889
|
+
```
|
|
5890
|
+
|
|
5891
|
+
**Script Output**
|
|
5892
|
+
|
|
5893
|
+
```python
|
|
5894
|
+
Solution found
|
|
5895
|
+
|
|
5896
|
+
0 1 2 3 4 5 6
|
|
5897
|
+
┌───┬───┬───┬───┬───┬───┬───┐
|
|
5898
|
+
0│ 5 │ + │ 7 │ - │ 8 │ = │ 4 │
|
|
5899
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5900
|
+
1│ + │ │ + │ │ * │ │ │
|
|
5901
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5902
|
+
2│ 1 │ * │ 9 │ / │ 3 │ = │ 3 │
|
|
5903
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5904
|
+
3│ * │ │ * │ │ + │ │ │
|
|
5905
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5906
|
+
4│ 4 │ * │ 2 │ - │ 6 │ = │ 2 │
|
|
5907
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5908
|
+
5│ = │ │ = │ │ = │ │ │
|
|
5909
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5910
|
+
6│24 │ │32 │ │30 │ │ │
|
|
5911
|
+
└───┴───┴───┴───┴───┴───┴───┘
|
|
5912
|
+
Solutions found: 1
|
|
5913
|
+
status: OPTIMAL
|
|
5914
|
+
Time taken: 0.00 seconds
|
|
5915
|
+
```
|
|
5916
|
+
|
|
5917
|
+
**Solved puzzle**
|
|
5918
|
+
|
|
5919
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_solved.png" alt="Mathema Grids solved" width="500">
|
|
5920
|
+
|
|
5921
|
+
---
|
|
5922
|
+
|
|
5839
5923
|
---
|
|
5840
5924
|
|
|
5841
5925
|
## Why SAT / CP-SAT?
|
|
@@ -5945,3 +6029,4 @@ Issues and PRs welcome!
|
|
|
5945
6029
|
[56]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/connect_the_dots "puzzle_solver/src/puzzle_solver/puzzles/connect_the_dots at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5946
6030
|
[57]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/nonograms "puzzle_solver/src/puzzle_solver/puzzles/nonograms at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5947
6031
|
[58]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/abc_view "puzzle_solver/src/puzzle_solver/puzzles/abc_view at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
6032
|
+
[59]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/mathema_grids "puzzle_solver/src/puzzle_solver/puzzles/mathema_grids at master · Ar-Kareem/puzzle_solver · GitHub"
|
{multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/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: 1.0.
|
|
3
|
+
Version: 1.0.9
|
|
4
4
|
Summary: Efficient solvers for countless (50+) types of puzzles (like Sudoku, Minesweeper, etc.) with a simple python API.
|
|
5
5
|
Author: Ar-Kareem
|
|
6
6
|
Project-URL: Homepage, https://github.com/Ar-Kareem/puzzle_solver
|
|
@@ -412,6 +412,11 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
|
412
412
|
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/abc_view_solved.png" alt="ABC View" width="140">
|
|
413
413
|
</a>
|
|
414
414
|
</td>
|
|
415
|
+
<td align="center">
|
|
416
|
+
<a href="#mathema-grids-puzzle-type-59"><b>Mathema Grids</b><br><br>
|
|
417
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_solved.png" alt="Mathema Grids" width="140">
|
|
418
|
+
</a>
|
|
419
|
+
</td>
|
|
415
420
|
</tr>
|
|
416
421
|
</table>
|
|
417
422
|
|
|
@@ -485,6 +490,7 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
|
485
490
|
- [Connect the Dots (Puzzle Type #56)](#connect-the-dots-puzzle-type-56)
|
|
486
491
|
- [Nonograms Colored (Puzzle Type #57)](#nonograms-colored-puzzle-type-57)
|
|
487
492
|
- [ABC View (Puzzle Type #58)](#abc-view-puzzle-type-58)
|
|
493
|
+
- [Mathema Grids (Puzzle Type #59)](#mathema-grids-puzzle-type-59)
|
|
488
494
|
- [Why SAT / CP-SAT?](#why-sat--cp-sat)
|
|
489
495
|
- [Testing](#testing)
|
|
490
496
|
- [Contributing](#contributing)
|
|
@@ -604,7 +610,15 @@ Time taken: 0.04 seconds
|
|
|
604
610
|
|
|
605
611
|
## Sudoku (Puzzle Type #2)
|
|
606
612
|
|
|
607
|
-
Also known as Number Place and Solo.
|
|
613
|
+
Also known as Number Place and Solo.
|
|
614
|
+
|
|
615
|
+
The code can:
|
|
616
|
+
|
|
617
|
+
1. Solve arbitrarily sized valid board sizes, thus can be used to solve:
|
|
618
|
+
- Hex Sudoku (a 16x16 variant)
|
|
619
|
+
- Kidoku (a kid-friendly sudoku variant)
|
|
620
|
+
2. Solve the ["Sandwich" sudoku variant](https://dkmgames.com/SandwichSudoku/) using the optional parameter `sandwich={'side': [...], 'bottom': [...]}`
|
|
621
|
+
3. Solve the ["Sudoku-X" variant](https://www.sudopedia.org/wiki/Sudoku-X) using the optional parameter `unique_diagonal=True`
|
|
608
622
|
|
|
609
623
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/solo.html)
|
|
610
624
|
|
|
@@ -629,12 +643,6 @@ You are given some of the numbers as clues; your aim is to place the rest of the
|
|
|
629
643
|
|
|
630
644
|
Code to utilize this package and solve the puzzle:
|
|
631
645
|
|
|
632
|
-
Note:
|
|
633
|
-
|
|
634
|
-
- The solver also supports solving the ["Sandwich" sudoku variant](https://dkmgames.com/SandwichSudoku/) through the optional parameter ``sandwich={'side': [...], 'bottom': [...] }``。
|
|
635
|
-
|
|
636
|
-
- The solver also supports solving the ["Sudoku-X" variant](https://www.sudopedia.org/wiki/Sudoku-X) through the optional parameter ``unique_diagonal=True``。
|
|
637
|
-
|
|
638
646
|
```python
|
|
639
647
|
import numpy as np
|
|
640
648
|
from puzzle_solver import sudoku_solver as solver
|
|
@@ -1099,7 +1107,7 @@ Time taken: 0.15 seconds
|
|
|
1099
1107
|
|
|
1100
1108
|
## Keen (Puzzle Type #8)
|
|
1101
1109
|
|
|
1102
|
-
Also known as KenKen or
|
|
1110
|
+
Also known as KenKen, CalcuDoku, Inkies, or Inky.
|
|
1103
1111
|
|
|
1104
1112
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/keen.html)
|
|
1105
1113
|
|
|
@@ -4037,6 +4045,8 @@ Applying the solution to the puzzle visually:
|
|
|
4037
4045
|
|
|
4038
4046
|
## Binairo (Puzzle Type #41)
|
|
4039
4047
|
|
|
4048
|
+
Also known as Takuzu, Binero, Tohu-Wa-Vohu (Formless and Empty), Eins und Zwei (One and Two), Binary Puzzles, Binoxxo, Binox, Zernero, Tic-Tac-Logic, and Sudoku Binary.
|
|
4049
|
+
|
|
4040
4050
|
* [**Play online**](https://www.puzzle-binairo.com)
|
|
4041
4051
|
|
|
4042
4052
|
* [**Solver Code**][41]
|
|
@@ -5862,6 +5872,80 @@ Time taken: 0.01 seconds
|
|
|
5862
5872
|
|
|
5863
5873
|
---
|
|
5864
5874
|
|
|
5875
|
+
## Mathema Grids (Puzzle Type #59)
|
|
5876
|
+
|
|
5877
|
+
* [**Play online**](https://www.brainbashers.com/showmathemagrids.asp)
|
|
5878
|
+
|
|
5879
|
+
* [**Solver Code**][59]
|
|
5880
|
+
|
|
5881
|
+
<details>
|
|
5882
|
+
<summary><strong>Rules</strong></summary>
|
|
5883
|
+
|
|
5884
|
+
Complete the grid using all of the numbers from 1 to 9.
|
|
5885
|
+
When completed, all of the sums must be correct.
|
|
5886
|
+
The sums are solved strictly from left to right, and top to bottom.
|
|
5887
|
+
The normal order of mathematical operations is ignored.
|
|
5888
|
+
For example, 2 + 5 x 9 is calculated as (2 + 5) x 9 = 63.
|
|
5889
|
+
÷ 1 doesn't appear in the puzzle.
|
|
5890
|
+
x 1 doesn't appear in the puzzle (although there might be 1 x).
|
|
5891
|
+
At no point will any calculation go below zero, or become fractional.
|
|
5892
|
+
|
|
5893
|
+
</details>
|
|
5894
|
+
|
|
5895
|
+
**Unsolved puzzle**
|
|
5896
|
+
|
|
5897
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_unsolved.png" alt="Mathema Grids unsolved" width="500">
|
|
5898
|
+
|
|
5899
|
+
Code to utilize this package and solve the puzzle:
|
|
5900
|
+
|
|
5901
|
+
```python
|
|
5902
|
+
import numpy as np
|
|
5903
|
+
from puzzle_solver import mathema_grids_solver as solver
|
|
5904
|
+
board = np.array([
|
|
5905
|
+
[' ', '+', ' ', '-', ' ', '=', '4'],
|
|
5906
|
+
['+', ' ', '+', ' ', '*', ' ', ' '],
|
|
5907
|
+
[' ', '*', ' ', '/', ' ', '=', '3'],
|
|
5908
|
+
['*', ' ', '*', ' ', '+', ' ', ' '],
|
|
5909
|
+
[' ', '*', '2', '-', ' ', '=', '2'],
|
|
5910
|
+
['=', ' ', '=', ' ', '=', ' ', ' '],
|
|
5911
|
+
['24', ' ', '32', ' ', '30', ' ', ' '],
|
|
5912
|
+
])
|
|
5913
|
+
binst = solver.Board(board=board, digits=[1, 2, 3, 4, 5, 6, 7, 8, 9])
|
|
5914
|
+
solutions = binst.solve_and_print()
|
|
5915
|
+
```
|
|
5916
|
+
|
|
5917
|
+
**Script Output**
|
|
5918
|
+
|
|
5919
|
+
```python
|
|
5920
|
+
Solution found
|
|
5921
|
+
|
|
5922
|
+
0 1 2 3 4 5 6
|
|
5923
|
+
┌───┬───┬───┬───┬───┬───┬───┐
|
|
5924
|
+
0│ 5 │ + │ 7 │ - │ 8 │ = │ 4 │
|
|
5925
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5926
|
+
1│ + │ │ + │ │ * │ │ │
|
|
5927
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5928
|
+
2│ 1 │ * │ 9 │ / │ 3 │ = │ 3 │
|
|
5929
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5930
|
+
3│ * │ │ * │ │ + │ │ │
|
|
5931
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5932
|
+
4│ 4 │ * │ 2 │ - │ 6 │ = │ 2 │
|
|
5933
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5934
|
+
5│ = │ │ = │ │ = │ │ │
|
|
5935
|
+
├───┼───┼───┼───┼───┼───┼───┤
|
|
5936
|
+
6│24 │ │32 │ │30 │ │ │
|
|
5937
|
+
└───┴───┴───┴───┴───┴───┴───┘
|
|
5938
|
+
Solutions found: 1
|
|
5939
|
+
status: OPTIMAL
|
|
5940
|
+
Time taken: 0.00 seconds
|
|
5941
|
+
```
|
|
5942
|
+
|
|
5943
|
+
**Solved puzzle**
|
|
5944
|
+
|
|
5945
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_solved.png" alt="Mathema Grids solved" width="500">
|
|
5946
|
+
|
|
5947
|
+
---
|
|
5948
|
+
|
|
5865
5949
|
---
|
|
5866
5950
|
|
|
5867
5951
|
## Why SAT / CP-SAT?
|
|
@@ -5971,3 +6055,4 @@ Issues and PRs welcome!
|
|
|
5971
6055
|
[56]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/connect_the_dots "puzzle_solver/src/puzzle_solver/puzzles/connect_the_dots at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5972
6056
|
[57]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/nonograms "puzzle_solver/src/puzzle_solver/puzzles/nonograms at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5973
6057
|
[58]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/abc_view "puzzle_solver/src/puzzle_solver/puzzles/abc_view at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
6058
|
+
[59]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/mathema_grids "puzzle_solver/src/puzzle_solver/puzzles/mathema_grids at master · Ar-Kareem/puzzle_solver · GitHub"
|
{multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.9}/src/multi_puzzle_solver.egg-info/SOURCES.txt
RENAMED
|
@@ -39,6 +39,7 @@ src/puzzle_solver/puzzles/light_up/light_up.py
|
|
|
39
39
|
src/puzzle_solver/puzzles/lits/lits.py
|
|
40
40
|
src/puzzle_solver/puzzles/magnets/magnets.py
|
|
41
41
|
src/puzzle_solver/puzzles/map/map.py
|
|
42
|
+
src/puzzle_solver/puzzles/mathema_grids/mathema_grids.py
|
|
42
43
|
src/puzzle_solver/puzzles/minesweeper/minesweeper.py
|
|
43
44
|
src/puzzle_solver/puzzles/mosaic/mosaic.py
|
|
44
45
|
src/puzzle_solver/puzzles/nonograms/nonograms.py
|
|
@@ -100,6 +101,7 @@ tests/test_light_up.py
|
|
|
100
101
|
tests/test_lits.py
|
|
101
102
|
tests/test_magnets.py
|
|
102
103
|
tests/test_map.py
|
|
104
|
+
tests/test_mathema_grids.py
|
|
103
105
|
tests/test_minesweeper.py
|
|
104
106
|
tests/test_mosaic.py
|
|
105
107
|
tests/test_nonograms.py
|
|
@@ -23,6 +23,7 @@ from puzzle_solver.puzzles.keen import keen as keen_solver
|
|
|
23
23
|
from puzzle_solver.puzzles.light_up import light_up as light_up_solver
|
|
24
24
|
from puzzle_solver.puzzles.magnets import magnets as magnets_solver
|
|
25
25
|
from puzzle_solver.puzzles.map import map as map_solver
|
|
26
|
+
from puzzle_solver.puzzles.mathema_grids import mathema_grids as mathema_grids_solver
|
|
26
27
|
from puzzle_solver.puzzles.minesweeper import minesweeper as minesweeper_solver
|
|
27
28
|
from puzzle_solver.puzzles.mosaic import mosaic as mosaic_solver
|
|
28
29
|
from puzzle_solver.puzzles.nonograms import nonograms as nonograms_solver
|
|
@@ -84,6 +85,7 @@ __all__ = [
|
|
|
84
85
|
light_up_solver,
|
|
85
86
|
magnets_solver,
|
|
86
87
|
map_solver,
|
|
88
|
+
mathema_grids_solver,
|
|
87
89
|
minesweeper_solver,
|
|
88
90
|
mosaic_solver,
|
|
89
91
|
nonograms_solver,
|
|
@@ -119,4 +121,4 @@ __all__ = [
|
|
|
119
121
|
inertia_image_parser,
|
|
120
122
|
]
|
|
121
123
|
|
|
122
|
-
__version__ = '1.0.
|
|
124
|
+
__version__ = '1.0.9'
|