multi-puzzle-solver 1.0.7__tar.gz → 1.0.8__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.

Files changed (137) hide show
  1. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/PKG-INFO +82 -1
  2. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/README.md +81 -0
  3. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/multi_puzzle_solver.egg-info/PKG-INFO +82 -1
  4. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/multi_puzzle_solver.egg-info/SOURCES.txt +2 -0
  5. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/__init__.py +3 -1
  6. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/core/utils_visualizer.py +565 -561
  7. multi_puzzle_solver-1.0.8/src/puzzle_solver/puzzles/mathema_grids/mathema_grids.py +119 -0
  8. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/nonograms/nonograms_colored.py +220 -221
  9. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/palisade/palisade.py +91 -91
  10. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/tracks/tracks.py +1 -1
  11. multi_puzzle_solver-1.0.8/tests/test_mathema_grids.py +106 -0
  12. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/pyproject.toml +0 -0
  13. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/setup.cfg +0 -0
  14. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/multi_puzzle_solver.egg-info/dependency_links.txt +0 -0
  15. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/multi_puzzle_solver.egg-info/requires.txt +0 -0
  16. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/multi_puzzle_solver.egg-info/top_level.txt +0 -0
  17. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/core/utils.py +0 -0
  18. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/core/utils_ortools.py +0 -0
  19. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/abc_view/abc_view.py +0 -0
  20. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/aquarium/aquarium.py +0 -0
  21. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/battleships/battleships.py +0 -0
  22. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/binairo/binairo.py +0 -0
  23. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/binairo/binairo_plus.py +0 -0
  24. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/black_box/black_box.py +0 -0
  25. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/bridges/bridges.py +0 -0
  26. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/chess_range/chess_melee.py +0 -0
  27. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/chess_range/chess_range.py +0 -0
  28. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/chess_range/chess_solo.py +0 -0
  29. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/connect_the_dots/connect_the_dots.py +0 -0
  30. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/dominosa/dominosa.py +0 -0
  31. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/filling/filling.py +0 -0
  32. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/flip/flip.py +0 -0
  33. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/flood_it/flood_it.py +0 -0
  34. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/flood_it/parse_map/parse_map.py +0 -0
  35. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/galaxies/galaxies.py +0 -0
  36. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/galaxies/parse_map/parse_map.py +0 -0
  37. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/guess/guess.py +0 -0
  38. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/heyawake/heyawake.py +0 -0
  39. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/inertia/inertia.py +0 -0
  40. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/inertia/parse_map/parse_map.py +0 -0
  41. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/inertia/tsp.py +0 -0
  42. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/kakurasu/kakurasu.py +0 -0
  43. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/kakuro/kakuro.py +0 -0
  44. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/keen/keen.py +0 -0
  45. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/light_up/light_up.py +0 -0
  46. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/lits/lits.py +0 -0
  47. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/magnets/magnets.py +0 -0
  48. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/map/map.py +0 -0
  49. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/minesweeper/minesweeper.py +0 -0
  50. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/mosaic/mosaic.py +0 -0
  51. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/nonograms/nonograms.py +0 -0
  52. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/norinori/norinori.py +0 -0
  53. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/nurikabe/nurikabe.py +0 -0
  54. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/pearl/pearl.py +0 -0
  55. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/pipes/pipes.py +0 -0
  56. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/range/range.py +0 -0
  57. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/rectangles/rectangles.py +0 -0
  58. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/shakashaka/shakashaka.py +0 -0
  59. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/shingoki/shingoki.py +0 -0
  60. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/signpost/signpost.py +0 -0
  61. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/singles/singles.py +0 -0
  62. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/slant/parse_map/parse_map.py +0 -0
  63. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/slant/slant.py +0 -0
  64. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/slitherlink/slitherlink.py +0 -0
  65. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/star_battle/star_battle.py +0 -0
  66. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/star_battle/star_battle_shapeless.py +0 -0
  67. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/stitches/parse_map/parse_map.py +0 -0
  68. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/stitches/stitches.py +0 -0
  69. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/sudoku/sudoku.py +0 -0
  70. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/tapa/tapa.py +0 -0
  71. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/tents/tents.py +0 -0
  72. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/thermometers/thermometers.py +0 -0
  73. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/towers/towers.py +0 -0
  74. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/twiddle/twiddle.py +0 -0
  75. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/undead/undead.py +0 -0
  76. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/unequal/unequal.py +0 -0
  77. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/unruly/unruly.py +0 -0
  78. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/yin_yang/parse_map/parse_map.py +0 -0
  79. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/puzzles/yin_yang/yin_yang.py +0 -0
  80. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/src/puzzle_solver/utils/visualizer.py +0 -0
  81. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_abc_view.py +0 -0
  82. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_aquarium.py +0 -0
  83. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_battleships.py +0 -0
  84. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_binairo.py +0 -0
  85. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_binairo_plus.py +0 -0
  86. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_black_box.py +0 -0
  87. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_bridges.py +0 -0
  88. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_chess_melee.py +0 -0
  89. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_chess_range.py +0 -0
  90. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_chess_solo.py +0 -0
  91. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_connect_the_dots.py +0 -0
  92. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_dominosa.py +0 -0
  93. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_filling.py +0 -0
  94. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_flip.py +0 -0
  95. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_flood_it.py +0 -0
  96. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_galaxies.py +0 -0
  97. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_guess.py +0 -0
  98. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_heyawake.py +0 -0
  99. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_inertia.py +0 -0
  100. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_kakurasu.py +0 -0
  101. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_kakuro.py +0 -0
  102. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_keen.py +0 -0
  103. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_light_up.py +0 -0
  104. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_lits.py +0 -0
  105. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_magnets.py +0 -0
  106. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_map.py +0 -0
  107. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_minesweeper.py +0 -0
  108. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_mosaic.py +0 -0
  109. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_nonograms.py +0 -0
  110. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_nonograms_colored.py +0 -0
  111. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_norinori.py +0 -0
  112. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_nurikabe.py +0 -0
  113. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_palisade.py +0 -0
  114. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_pearl.py +0 -0
  115. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_pipes.py +0 -0
  116. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_range.py +0 -0
  117. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_rectangles.py +0 -0
  118. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_shakashaka.py +0 -0
  119. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_shingoki.py +0 -0
  120. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_signpost.py +0 -0
  121. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_singles.py +0 -0
  122. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_slant.py +0 -0
  123. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_slitherlink.py +0 -0
  124. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_star_battle.py +0 -0
  125. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_stitches.py +0 -0
  126. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_sudoku.py +0 -0
  127. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_tapa.py +0 -0
  128. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_tents.py +0 -0
  129. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_thermometers.py +0 -0
  130. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_towers.py +0 -0
  131. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_tracks.py +0 -0
  132. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_twiddle.py +0 -0
  133. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_undead.py +0 -0
  134. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_unequal.py +0 -0
  135. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_unruly.py +0 -0
  136. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/tests/test_utils.py +0 -0
  137. {multi_puzzle_solver-1.0.7 → multi_puzzle_solver-1.0.8}/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.7
3
+ Version: 1.0.8
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)
@@ -5862,6 +5868,80 @@ Time taken: 0.01 seconds
5862
5868
 
5863
5869
  ---
5864
5870
 
5871
+ ## Mathema Grids (Puzzle Type #59)
5872
+
5873
+ * [**Play online**](https://www.brainbashers.com/showmathemagrids.asp)
5874
+
5875
+ * [**Solver Code**][59]
5876
+
5877
+ <details>
5878
+ <summary><strong>Rules</strong></summary>
5879
+
5880
+ Complete the grid using all of the numbers from 1 to 9.
5881
+ When completed, all of the sums must be correct.
5882
+ The sums are solved strictly from left to right, and top to bottom.
5883
+ The normal order of mathematical operations is ignored.
5884
+ For example, 2 + 5 x 9 is calculated as (2 + 5) x 9 = 63.
5885
+ ÷ 1 doesn't appear in the puzzle.
5886
+ x 1 doesn't appear in the puzzle (although there might be 1 x).
5887
+ At no point will any calculation go below zero, or become fractional.
5888
+
5889
+ </details>
5890
+
5891
+ **Unsolved puzzle**
5892
+
5893
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_unsolved.png" alt="Mathema Grids unsolved" width="500">
5894
+
5895
+ Code to utilize this package and solve the puzzle:
5896
+
5897
+ ```python
5898
+ import numpy as np
5899
+ from puzzle_solver import mathema_grids_solver as solver
5900
+ board = np.array([
5901
+ [' ', '+', ' ', '-', ' ', '=', '4'],
5902
+ ['+', ' ', '+', ' ', '*', ' ', ' '],
5903
+ [' ', '*', ' ', '/', ' ', '=', '3'],
5904
+ ['*', ' ', '*', ' ', '+', ' ', ' '],
5905
+ [' ', '*', '2', '-', ' ', '=', '2'],
5906
+ ['=', ' ', '=', ' ', '=', ' ', ' '],
5907
+ ['24', ' ', '32', ' ', '30', ' ', ' '],
5908
+ ])
5909
+ binst = solver.Board(board=board, digits=[1, 2, 3, 4, 5, 6, 7, 8, 9])
5910
+ solutions = binst.solve_and_print()
5911
+ ```
5912
+
5913
+ **Script Output**
5914
+
5915
+ ```python
5916
+ Solution found
5917
+
5918
+ 0 1 2 3 4 5 6
5919
+ ┌───┬───┬───┬───┬───┬───┬───┐
5920
+ 0│ 5 │ + │ 7 │ - │ 8 │ = │ 4 │
5921
+ ├───┼───┼───┼───┼───┼───┼───┤
5922
+ 1│ + │ │ + │ │ * │ │ │
5923
+ ├───┼───┼───┼───┼───┼───┼───┤
5924
+ 2│ 1 │ * │ 9 │ / │ 3 │ = │ 3 │
5925
+ ├───┼───┼───┼───┼───┼───┼───┤
5926
+ 3│ * │ │ * │ │ + │ │ │
5927
+ ├───┼───┼───┼───┼───┼───┼───┤
5928
+ 4│ 4 │ * │ 2 │ - │ 6 │ = │ 2 │
5929
+ ├───┼───┼───┼───┼───┼───┼───┤
5930
+ 5│ = │ │ = │ │ = │ │ │
5931
+ ├───┼───┼───┼───┼───┼───┼───┤
5932
+ 6│24 │ │32 │ │30 │ │ │
5933
+ └───┴───┴───┴───┴───┴───┴───┘
5934
+ Solutions found: 1
5935
+ status: OPTIMAL
5936
+ Time taken: 0.00 seconds
5937
+ ```
5938
+
5939
+ **Solved puzzle**
5940
+
5941
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_solved.png" alt="Mathema Grids solved" width="500">
5942
+
5943
+ ---
5944
+
5865
5945
  ---
5866
5946
 
5867
5947
  ## Why SAT / CP-SAT?
@@ -5971,3 +6051,4 @@ Issues and PRs welcome!
5971
6051
  [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
6052
  [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
6053
  [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"
6054
+ [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)
@@ -5836,6 +5842,80 @@ Time taken: 0.01 seconds
5836
5842
 
5837
5843
  ---
5838
5844
 
5845
+ ## Mathema Grids (Puzzle Type #59)
5846
+
5847
+ * [**Play online**](https://www.brainbashers.com/showmathemagrids.asp)
5848
+
5849
+ * [**Solver Code**][59]
5850
+
5851
+ <details>
5852
+ <summary><strong>Rules</strong></summary>
5853
+
5854
+ Complete the grid using all of the numbers from 1 to 9.
5855
+ When completed, all of the sums must be correct.
5856
+ The sums are solved strictly from left to right, and top to bottom.
5857
+ The normal order of mathematical operations is ignored.
5858
+ For example, 2 + 5 x 9 is calculated as (2 + 5) x 9 = 63.
5859
+ ÷ 1 doesn't appear in the puzzle.
5860
+ x 1 doesn't appear in the puzzle (although there might be 1 x).
5861
+ At no point will any calculation go below zero, or become fractional.
5862
+
5863
+ </details>
5864
+
5865
+ **Unsolved puzzle**
5866
+
5867
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_unsolved.png" alt="Mathema Grids unsolved" width="500">
5868
+
5869
+ Code to utilize this package and solve the puzzle:
5870
+
5871
+ ```python
5872
+ import numpy as np
5873
+ from puzzle_solver import mathema_grids_solver as solver
5874
+ board = np.array([
5875
+ [' ', '+', ' ', '-', ' ', '=', '4'],
5876
+ ['+', ' ', '+', ' ', '*', ' ', ' '],
5877
+ [' ', '*', ' ', '/', ' ', '=', '3'],
5878
+ ['*', ' ', '*', ' ', '+', ' ', ' '],
5879
+ [' ', '*', '2', '-', ' ', '=', '2'],
5880
+ ['=', ' ', '=', ' ', '=', ' ', ' '],
5881
+ ['24', ' ', '32', ' ', '30', ' ', ' '],
5882
+ ])
5883
+ binst = solver.Board(board=board, digits=[1, 2, 3, 4, 5, 6, 7, 8, 9])
5884
+ solutions = binst.solve_and_print()
5885
+ ```
5886
+
5887
+ **Script Output**
5888
+
5889
+ ```python
5890
+ Solution found
5891
+
5892
+ 0 1 2 3 4 5 6
5893
+ ┌───┬───┬───┬───┬───┬───┬───┐
5894
+ 0│ 5 │ + │ 7 │ - │ 8 │ = │ 4 │
5895
+ ├───┼───┼───┼───┼───┼───┼───┤
5896
+ 1│ + │ │ + │ │ * │ │ │
5897
+ ├───┼───┼───┼───┼───┼───┼───┤
5898
+ 2│ 1 │ * │ 9 │ / │ 3 │ = │ 3 │
5899
+ ├───┼───┼───┼───┼───┼───┼───┤
5900
+ 3│ * │ │ * │ │ + │ │ │
5901
+ ├───┼───┼───┼───┼───┼───┼───┤
5902
+ 4│ 4 │ * │ 2 │ - │ 6 │ = │ 2 │
5903
+ ├───┼───┼───┼───┼───┼───┼───┤
5904
+ 5│ = │ │ = │ │ = │ │ │
5905
+ ├───┼───┼───┼───┼───┼───┼───┤
5906
+ 6│24 │ │32 │ │30 │ │ │
5907
+ └───┴───┴───┴───┴───┴───┴───┘
5908
+ Solutions found: 1
5909
+ status: OPTIMAL
5910
+ Time taken: 0.00 seconds
5911
+ ```
5912
+
5913
+ **Solved puzzle**
5914
+
5915
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_solved.png" alt="Mathema Grids solved" width="500">
5916
+
5917
+ ---
5918
+
5839
5919
  ---
5840
5920
 
5841
5921
  ## Why SAT / CP-SAT?
@@ -5945,3 +6025,4 @@ Issues and PRs welcome!
5945
6025
  [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
6026
  [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
6027
  [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"
6028
+ [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"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multi-puzzle-solver
3
- Version: 1.0.7
3
+ Version: 1.0.8
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)
@@ -5862,6 +5868,80 @@ Time taken: 0.01 seconds
5862
5868
 
5863
5869
  ---
5864
5870
 
5871
+ ## Mathema Grids (Puzzle Type #59)
5872
+
5873
+ * [**Play online**](https://www.brainbashers.com/showmathemagrids.asp)
5874
+
5875
+ * [**Solver Code**][59]
5876
+
5877
+ <details>
5878
+ <summary><strong>Rules</strong></summary>
5879
+
5880
+ Complete the grid using all of the numbers from 1 to 9.
5881
+ When completed, all of the sums must be correct.
5882
+ The sums are solved strictly from left to right, and top to bottom.
5883
+ The normal order of mathematical operations is ignored.
5884
+ For example, 2 + 5 x 9 is calculated as (2 + 5) x 9 = 63.
5885
+ ÷ 1 doesn't appear in the puzzle.
5886
+ x 1 doesn't appear in the puzzle (although there might be 1 x).
5887
+ At no point will any calculation go below zero, or become fractional.
5888
+
5889
+ </details>
5890
+
5891
+ **Unsolved puzzle**
5892
+
5893
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_unsolved.png" alt="Mathema Grids unsolved" width="500">
5894
+
5895
+ Code to utilize this package and solve the puzzle:
5896
+
5897
+ ```python
5898
+ import numpy as np
5899
+ from puzzle_solver import mathema_grids_solver as solver
5900
+ board = np.array([
5901
+ [' ', '+', ' ', '-', ' ', '=', '4'],
5902
+ ['+', ' ', '+', ' ', '*', ' ', ' '],
5903
+ [' ', '*', ' ', '/', ' ', '=', '3'],
5904
+ ['*', ' ', '*', ' ', '+', ' ', ' '],
5905
+ [' ', '*', '2', '-', ' ', '=', '2'],
5906
+ ['=', ' ', '=', ' ', '=', ' ', ' '],
5907
+ ['24', ' ', '32', ' ', '30', ' ', ' '],
5908
+ ])
5909
+ binst = solver.Board(board=board, digits=[1, 2, 3, 4, 5, 6, 7, 8, 9])
5910
+ solutions = binst.solve_and_print()
5911
+ ```
5912
+
5913
+ **Script Output**
5914
+
5915
+ ```python
5916
+ Solution found
5917
+
5918
+ 0 1 2 3 4 5 6
5919
+ ┌───┬───┬───┬───┬───┬───┬───┐
5920
+ 0│ 5 │ + │ 7 │ - │ 8 │ = │ 4 │
5921
+ ├───┼───┼───┼───┼───┼───┼───┤
5922
+ 1│ + │ │ + │ │ * │ │ │
5923
+ ├───┼───┼───┼───┼───┼───┼───┤
5924
+ 2│ 1 │ * │ 9 │ / │ 3 │ = │ 3 │
5925
+ ├───┼───┼───┼───┼───┼───┼───┤
5926
+ 3│ * │ │ * │ │ + │ │ │
5927
+ ├───┼───┼───┼───┼───┼───┼───┤
5928
+ 4│ 4 │ * │ 2 │ - │ 6 │ = │ 2 │
5929
+ ├───┼───┼───┼───┼───┼───┼───┤
5930
+ 5│ = │ │ = │ │ = │ │ │
5931
+ ├───┼───┼───┼───┼───┼───┼───┤
5932
+ 6│24 │ │32 │ │30 │ │ │
5933
+ └───┴───┴───┴───┴───┴───┴───┘
5934
+ Solutions found: 1
5935
+ status: OPTIMAL
5936
+ Time taken: 0.00 seconds
5937
+ ```
5938
+
5939
+ **Solved puzzle**
5940
+
5941
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mathema_grids_solved.png" alt="Mathema Grids solved" width="500">
5942
+
5943
+ ---
5944
+
5865
5945
  ---
5866
5946
 
5867
5947
  ## Why SAT / CP-SAT?
@@ -5971,3 +6051,4 @@ Issues and PRs welcome!
5971
6051
  [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
6052
  [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
6053
  [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"
6054
+ [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"
@@ -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.7'
124
+ __version__ = '1.0.8'