multi-puzzle-solver 1.0.4__tar.gz → 1.0.6__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 (138) hide show
  1. {multi_puzzle_solver-1.0.4/src/multi_puzzle_solver.egg-info → multi_puzzle_solver-1.0.6}/PKG-INFO +740 -296
  2. multi_puzzle_solver-1.0.4/PKG-INFO → multi_puzzle_solver-1.0.6/README.md +5872 -5454
  3. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/pyproject.toml +1 -1
  4. multi_puzzle_solver-1.0.4/README.md → multi_puzzle_solver-1.0.6/src/multi_puzzle_solver.egg-info/PKG-INFO +5898 -5428
  5. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/multi_puzzle_solver.egg-info/SOURCES.txt +2 -0
  6. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/__init__.py +3 -1
  7. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/core/utils.py +17 -1
  8. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/core/utils_visualizer.py +257 -201
  9. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/aquarium/aquarium.py +8 -23
  10. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/battleships/battleships.py +39 -53
  11. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/binairo/binairo.py +2 -2
  12. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/black_box/black_box.py +6 -70
  13. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/connect_the_dots/connect_the_dots.py +4 -2
  14. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/filling/filling.py +11 -34
  15. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/galaxies/galaxies.py +4 -2
  16. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/heyawake/heyawake.py +6 -2
  17. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/kakurasu/kakurasu.py +5 -13
  18. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/kakuro/kakuro.py +6 -2
  19. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/lits/lits.py +4 -2
  20. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/mosaic/mosaic.py +8 -18
  21. multi_puzzle_solver-1.0.6/src/puzzle_solver/puzzles/nonograms/nonograms.py +121 -0
  22. multi_puzzle_solver-1.0.6/src/puzzle_solver/puzzles/nonograms/nonograms_colored.py +221 -0
  23. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/norinori/norinori.py +5 -12
  24. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/nurikabe/nurikabe.py +6 -2
  25. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/palisade/palisade.py +4 -3
  26. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/pearl/pearl.py +15 -27
  27. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/pipes/pipes.py +2 -1
  28. multi_puzzle_solver-1.0.6/src/puzzle_solver/puzzles/range/range.py +69 -0
  29. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/rectangles/rectangles.py +4 -2
  30. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/shingoki/shingoki.py +2 -2
  31. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/singles/singles.py +6 -2
  32. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/slant/slant.py +13 -19
  33. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/slitherlink/slitherlink.py +2 -2
  34. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/star_battle/star_battle.py +5 -2
  35. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/stitches/stitches.py +8 -21
  36. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/sudoku/sudoku.py +5 -11
  37. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/tapa/tapa.py +6 -2
  38. multi_puzzle_solver-1.0.6/src/puzzle_solver/puzzles/tents/tents.py +80 -0
  39. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/tracks/tracks.py +19 -66
  40. multi_puzzle_solver-1.0.6/src/puzzle_solver/puzzles/unruly/unruly.py +54 -0
  41. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/yin_yang/yin_yang.py +3 -10
  42. multi_puzzle_solver-1.0.6/tests/test_battleships.py +120 -0
  43. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_flood_it.py +2 -0
  44. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_heyawake.py +2 -2
  45. multi_puzzle_solver-1.0.6/tests/test_nonograms_colored.py +213 -0
  46. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_pearl.py +2 -2
  47. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_range.py +16 -16
  48. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_slant.py +19 -19
  49. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_stitches.py +3 -3
  50. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_sudoku.py +1 -0
  51. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_tents.py +28 -1
  52. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_tracks.py +4 -4
  53. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_twiddle.py +6 -2
  54. multi_puzzle_solver-1.0.4/src/puzzle_solver/puzzles/nonograms/nonograms.py +0 -126
  55. multi_puzzle_solver-1.0.4/src/puzzle_solver/puzzles/range/range.py +0 -105
  56. multi_puzzle_solver-1.0.4/src/puzzle_solver/puzzles/tents/tents.py +0 -110
  57. multi_puzzle_solver-1.0.4/src/puzzle_solver/puzzles/unruly/unruly.py +0 -86
  58. multi_puzzle_solver-1.0.4/tests/test_battleships.py +0 -63
  59. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/setup.cfg +0 -0
  60. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/multi_puzzle_solver.egg-info/dependency_links.txt +0 -0
  61. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/multi_puzzle_solver.egg-info/requires.txt +0 -0
  62. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/multi_puzzle_solver.egg-info/top_level.txt +0 -0
  63. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/core/utils_ortools.py +0 -0
  64. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/binairo/binairo_plus.py +0 -0
  65. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/bridges/bridges.py +0 -0
  66. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/chess_range/chess_melee.py +0 -0
  67. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/chess_range/chess_range.py +0 -0
  68. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/chess_range/chess_solo.py +0 -0
  69. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/dominosa/dominosa.py +0 -0
  70. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/flip/flip.py +0 -0
  71. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/flood_it/flood_it.py +0 -0
  72. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/flood_it/parse_map/parse_map.py +0 -0
  73. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/galaxies/parse_map/parse_map.py +0 -0
  74. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/guess/guess.py +0 -0
  75. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/inertia/inertia.py +0 -0
  76. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/inertia/parse_map/parse_map.py +0 -0
  77. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/inertia/tsp.py +0 -0
  78. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/keen/keen.py +0 -0
  79. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/light_up/light_up.py +0 -0
  80. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/magnets/magnets.py +0 -0
  81. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/map/map.py +0 -0
  82. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/minesweeper/minesweeper.py +0 -0
  83. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/shakashaka/shakashaka.py +0 -0
  84. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/signpost/signpost.py +0 -0
  85. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/slant/parse_map/parse_map.py +0 -0
  86. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/star_battle/star_battle_shapeless.py +0 -0
  87. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/stitches/parse_map/parse_map.py +0 -0
  88. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/thermometers/thermometers.py +0 -0
  89. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/towers/towers.py +0 -0
  90. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/twiddle/twiddle.py +0 -0
  91. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/undead/undead.py +0 -0
  92. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/unequal/unequal.py +0 -0
  93. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/puzzles/yin_yang/parse_map/parse_map.py +0 -0
  94. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/src/puzzle_solver/utils/visualizer.py +0 -0
  95. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_aquarium.py +0 -0
  96. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_binairo.py +0 -0
  97. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_binairo_plus.py +0 -0
  98. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_black_box.py +0 -0
  99. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_bridges.py +0 -0
  100. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_chess_melee.py +0 -0
  101. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_chess_range.py +0 -0
  102. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_chess_solo.py +0 -0
  103. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_connect_the_dots.py +0 -0
  104. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_dominosa.py +0 -0
  105. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_filling.py +0 -0
  106. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_flip.py +0 -0
  107. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_galaxies.py +0 -0
  108. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_guess.py +0 -0
  109. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_inertia.py +0 -0
  110. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_kakurasu.py +0 -0
  111. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_kakuro.py +0 -0
  112. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_keen.py +0 -0
  113. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_light_up.py +0 -0
  114. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_lits.py +0 -0
  115. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_magnets.py +0 -0
  116. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_map.py +0 -0
  117. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_minesweeper.py +0 -0
  118. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_mosaic.py +0 -0
  119. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_nonograms.py +0 -0
  120. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_norinori.py +0 -0
  121. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_nurikabe.py +0 -0
  122. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_palisade.py +0 -0
  123. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_pipes.py +0 -0
  124. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_rectangles.py +0 -0
  125. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_shakashaka.py +0 -0
  126. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_shingoki.py +0 -0
  127. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_signpost.py +0 -0
  128. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_singles.py +0 -0
  129. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_slitherlink.py +0 -0
  130. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_star_battle.py +0 -0
  131. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_tapa.py +0 -0
  132. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_thermometers.py +0 -0
  133. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_towers.py +0 -0
  134. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_undead.py +0 -0
  135. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_unequal.py +0 -0
  136. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_unruly.py +0 -0
  137. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_utils.py +0 -0
  138. {multi_puzzle_solver-1.0.4 → multi_puzzle_solver-1.0.6}/tests/test_yin_yang.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: multi-puzzle-solver
3
- Version: 1.0.4
4
- Summary: Efficient solvers for numerous popular and esoteric logic puzzles using CP-SAT
3
+ Version: 1.0.6
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
7
7
  Project-URL: Repository, https://github.com/Ar-Kareem/puzzle_solver
@@ -402,6 +402,11 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
402
402
  <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/connect_the_dots_solved.png" alt="Connect the Dots" width="140">
403
403
  </a>
404
404
  </td>
405
+ <td align="center">
406
+ <a href="#nonograms-colored-puzzle-type-57"><b>Nonograms Colored</b><br><br>
407
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/nonograms_colored_solved.png" alt="Nonograms Colored" width="140">
408
+ </a>
409
+ </td>
405
410
  </tr>
406
411
  </table>
407
412
 
@@ -473,6 +478,7 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
473
478
  - [Flood It (Puzzle Type #54)](#flood-it-puzzle-type-54)
474
479
  - [Pipes (Puzzle Type #55)](#pipes-puzzle-type-55)
475
480
  - [Connect the Dots (Puzzle Type #56)](#connect-the-dots-puzzle-type-56)
481
+ - [Nonograms Colored (Puzzle Type #57)](#nonograms-colored-puzzle-type-57)
476
482
  - [Why SAT / CP-SAT?](#why-sat--cp-sat)
477
483
  - [Testing](#testing)
478
484
  - [Contributing](#contributing)
@@ -546,21 +552,39 @@ solutions = binst.solve_and_print()
546
552
  **Script Output**
547
553
  ```python
548
554
  Solution found
549
- B B B B B B B . B B B . . . .
550
- B B B B B B B . . . . . B . B
551
- B B . . . . . . . . . B B B .
552
- B B . . . . . . . . . . B B B
553
- B B B . . . . . . . . . . B B
554
- B . . . B . B . . B . . . B B
555
- B . . . . . B B B B B B . . B
556
- B . . . . . B B B B B B B B B
557
- . . . . . B B B B B B B B B .
558
- . . . . . B B . B B B B . . .
559
- . . . . B B B B B B B B . . .
560
- B B B B B B B B B B B . . . .
561
- B B B B B B B . . B . B . . .
562
- . B B B B . . . . B B B . . .
563
- . B B B . . . . . . . B B . .
555
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
556
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
557
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
558
+ 0│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │ │ │ │
559
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
560
+ 1│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │ │▒▒▒│ │▒▒▒│
561
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
562
+ 2│▒▒▒│▒▒▒│ │ │ │ │ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│ │
563
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
564
+ 3│▒▒▒│▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│
565
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
566
+ 4│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒│▒▒▒│
567
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
568
+ 5│▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ │ │▒▒▒│ │ │ │▒▒▒│▒▒▒│
569
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
570
+ 6│▒▒▒│ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │▒▒▒│
571
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
572
+ 7│▒▒▒│ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│
573
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
574
+ 8│ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │
575
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
576
+ 9│ │ │ │ │ │▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │
577
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
578
+ 10│ │ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │
579
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
580
+ 11│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │
581
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
582
+ 12│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│ │ │ │
583
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
584
+ 13│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │▒▒▒│▒▒▒│▒▒▒│ │ │ │
585
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
586
+ 14│ │▒▒▒│▒▒▒│▒▒▒│ │ │ │ │ │ │ │▒▒▒│▒▒▒│ │ │
587
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
564
588
  Solutions found: 1
565
589
  status: OPTIMAL
566
590
  Time taken: 0.04 seconds
@@ -636,22 +660,41 @@ assert len(solutions) == 1, f'unique solutions != 1, == {len(solutions)}'
636
660
  **Script Output**
637
661
  ```python
638
662
  Solution found
639
- [['g' '7' '5' '4' '9' '1' 'c' 'e' 'd' 'f' 'b' '8' '2' '6' '3' 'a']
640
- ['3' '9' 'd' 'e' 'f' 'a' '7' 'g' '2' '6' '4' 'c' '5' '1' '8' 'b']
641
- ['b' 'c' '1' '8' '5' '6' '3' '2' 'e' '9' '7' 'a' '4' 'g' 'f' 'd']
642
- ['f' '6' '2' 'a' 'b' '8' 'd' '4' '1' '3' '5' 'g' 'c' '7' '9' 'e']
643
- ['4' 'a' 'e' '3' '8' 'f' '1' '6' '5' 'b' '2' '9' 'g' 'd' 'c' '7']
644
- ['6' 'g' 'f' 'c' 'e' 'd' '2' '5' '4' '7' 'a' '1' '3' '9' 'b' '8']
645
- ['d' '1' '9' '2' 'a' '3' 'b' '7' 'c' 'g' '8' '6' 'e' 'f' '5' '4']
646
- ['5' 'b' '8' '7' 'g' '4' '9' 'c' 'f' 'd' '3' 'e' '1' 'a' '2' '6']
647
- ['2' 'e' 'a' 'b' 'd' 'c' 'g' '1' '3' '8' '9' 'f' '7' '4' '6' '5']
648
- ['8' '4' '6' '1' '3' 'b' 'e' 'f' '7' '5' 'c' 'd' 'a' '2' 'g' '9']
649
- ['9' 'f' '3' 'g' '7' '5' '8' 'a' '6' '4' 'e' '2' 'd' 'b' '1' 'c']
650
- ['c' 'd' '7' '5' '4' '2' '6' '9' 'g' 'a' '1' 'b' '8' '3' 'e' 'f']
651
- ['7' '5' 'g' 'd' '2' '9' 'a' 'b' '8' 'c' 'f' '3' '6' 'e' '4' '1']
652
- ['a' '2' 'b' '6' 'c' 'e' '5' '3' '9' '1' 'd' '4' 'f' '8' '7' 'g']
653
- ['e' '8' 'c' 'f' '1' 'g' '4' 'd' 'b' '2' '6' '7' '9' '5' 'a' '3']
654
- ['1' '3' '4' '9' '6' '7' 'f' '8' 'a' 'e' 'g' '5' 'b' 'c' 'd' '2']]
663
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
664
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
665
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
666
+ 0│ g 7 5 4 9 1 c e │ d │ f │ b │ 8 │ 2 │ 6 │ 3 │ a │
667
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
668
+ 1│ 3 9 d │ e │ f │ a │ 7 │ g │ 2 6 │ 4 c │ 5 │ 1 8 b
669
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
670
+ 2│ b c 1 8 5 │ 6 │ 3 │ 2 │ e 9 │ 7 │ a 4 │ g │ f │ d │
671
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
672
+ 3│ f │ 6 │ 2 │ a │ b │ 8 │ d │ 4 1 3 5 g c 7 9 │ e │
673
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
674
+ 4│ 4 a │ e │ 3 │ 8 │ f │ 1 │ 6 │ 5 b │ 2 9 g d c 7
675
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
676
+ 5│ 6 g │ f │ c e │ d │ 2 │ 5 │ 4 │ 7 │ a │ 1 │ 3 9 b 8
677
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
678
+ 6│ d │ 1 │ 9 │ 2 │ a │ 3 b 7 c │ g │ 8 6 │ e f │ 5 4
679
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
680
+ 7│ 5 │ b │ 8 │ 7 │ g │ 4 │ 9 │ c │ f │ d │ 3 │ e │ 1 │ a │ 2 │ 6 │
681
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
682
+ 8│ 2 │ e │ a │ b │ d │ c │ g │ 1 │ 3 │ 8 │ 9 │ f │ 7 │ 4 │ 6 │ 5 │
683
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
684
+ 9│ 8 │ 4 │ 6 │ 1 │ 3 │ b │ e │ f │ 7 │ 5 │ c │ d │ a │ 2 │ g │ 9 │
685
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
686
+ 10│ 9 │ f │ 3 │ g │ 7 │ 5 │ 8 │ a │ 6 │ 4 │ e │ 2 │ d │ b │ 1 │ c │
687
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
688
+ 11│ c │ d │ 7 │ 5 │ 4 │ 2 │ 6 │ 9 │ g │ a │ 1 │ b │ 8 │ 3 │ e │ f │
689
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
690
+ 12│ 7 │ 5 │ g │ d │ 2 │ 9 │ a │ b │ 8 │ c │ f │ 3 │ 6 │ e │ 4 │ 1 │
691
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
692
+ 13│ a │ 2 │ b │ 6 │ c │ e │ 5 │ 3 │ 9 │ 1 │ d │ 4 │ f │ 8 │ 7 │ g │
693
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
694
+ 14│ e │ 8 │ c │ f │ 1 │ g │ 4 │ d │ b │ 2 │ 6 │ 7 │ 9 │ 5 │ a │ 3 │
695
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
696
+ 15│ 1 │ 3 │ 4 │ 9 │ 6 │ 7 │ f │ 8 │ a │ e │ g │ 5 │ b │ c │ d │ 2 │
697
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
655
698
  Solutions found: 1
656
699
  status: OPTIMAL
657
700
  Time taken: 0.04 seconds
@@ -929,26 +972,47 @@ binst = solver.Board(board=board, sides={'top': top, 'side': side})
929
972
  solutions = binst.solve_and_print()
930
973
  ```
931
974
  **Script Output**
932
- ```python
975
+
976
+ (Note: ▲ represents a tent)
977
+
978
+ ```
933
979
  Solution found
934
- [[' ' 'T' 'E' ' ' ' ' ' ' ' ' 'E' 'T' ' ' 'T' 'E' 'T' 'E' ' ']
935
- [' ' ' ' ' ' ' ' 'T' 'E' ' ' 'T' ' ' 'T' ' ' ' ' 'T' ' ' ' ']
936
- ['E' 'T' 'E' 'T' ' ' ' ' ' ' 'E' ' ' 'E' ' ' ' ' 'E' ' ' 'E']
937
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'T' ' ' ' ' ' ' 'T' ' ' 'T']
938
- [' ' 'E' ' ' ' ' 'E' ' ' 'E' ' ' 'E' ' ' ' ' ' ' 'E' ' ' ' ']
939
- [' ' 'T' ' ' ' ' 'T' ' ' 'T' ' ' ' ' 'T' 'E' ' ' 'T' 'T' 'E']
940
- [' ' 'T' ' ' ' ' 'T' 'E' ' ' 'E' 'T' ' ' ' ' ' ' 'E' ' ' ' ']
941
- [' ' 'E' ' ' ' ' ' ' ' ' 'T' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
942
- [' ' ' ' ' ' ' ' 'E' 'T' 'E' ' ' ' ' 'E' 'T' ' ' 'E' 'T' 'E']
943
- ['E' ' ' 'E' 'T' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'T' ' ' 'T']
944
- ['T' ' ' ' ' ' ' ' ' ' ' ' ' 'T' 'E' ' ' ' ' 'T' 'E' ' ' 'E']
945
- ['T' ' ' ' ' 'E' 'T' 'E' 'T' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
946
- ['E' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'T' 'E' 'T' 'E' ' ' 'E' 'T']
947
- [' ' 'T' 'E' ' ' 'E' 'T' 'E' ' ' ' ' ' ' ' ' ' ' 'T' ' ' ' ']
948
- ['E' 'T' ' ' ' ' 'T' ' ' ' ' ' ' 'E' 'T' 'E' 'T' 'E' ' ' ' ']]
980
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
981
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
982
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
983
+ 0│ │ | │ │ │ │ │ | │ │ | | │ │
984
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
985
+ 1│ │ │ │ │ | │ │ | │ │ | │ │ │ | │ │ │
986
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
987
+ 2│ | | │ │ │ │ │ │ │ │ │ │ │
988
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
989
+ 3│ │ │ │ │ │ │ │ │ | │ │ │ │ | │ │ |
990
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
991
+ 4│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
992
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
993
+ 5│ │ | │ │ │ | │ │ | │ │ │ | │ │ | |
994
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
995
+ 6│ │ | │ │ │ | │ ▲ │ │ ▲ │ | │ │ │ │ ▲ │ │ │
996
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
997
+ 7│ │ ▲ │ │ │ │ │ | │ │ │ │ │ │ │ │ │
998
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
999
+ 8│ │ │ │ │ ▲ │ | │ ▲ │ │ │ ▲ │ | │ │ ▲ │ | │ ▲ │
1000
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1001
+ 9│ ▲ │ │ ▲ │ | │ │ │ │ │ │ │ │ │ | │ │ | │
1002
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1003
+ 10│ | │ │ │ │ │ │ │ | │ ▲ │ │ │ | │ ▲ │ │ ▲ │
1004
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1005
+ 11│ | │ │ │ ▲ │ | │ ▲ │ | │ │ │ │ │ │ │ │ │
1006
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1007
+ 12│ ▲ │ │ │ │ │ │ │ │ | │ ▲ │ | │ ▲ │ │ ▲ │ | │
1008
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1009
+ 13│ │ | │ ▲ │ │ ▲ │ | │ ▲ │ │ │ │ │ │ | │ │ │
1010
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1011
+ 14│ ▲ │ | │ │ │ | │ │ │ │ ▲ │ | │ ▲ │ | │ ▲ │ │ │
1012
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
949
1013
  Solutions found: 1
950
1014
  status: OPTIMAL
951
- Time taken: 0.02 seconds
1015
+ Time taken: 0.01 seconds
952
1016
  ```
953
1017
 
954
1018
  **Solved puzzle**
@@ -1001,15 +1065,24 @@ assert len(solutions) == 1, f'unique solutions != 1, == {len(solutions)}'
1001
1065
  **Script Output**
1002
1066
  ```python
1003
1067
  Solution found
1004
- [[4 4 2 2 4 2 2]
1005
- [4 4 7 4 4 3 3]
1006
- [7 7 7 3 4 5 3]
1007
- [7 6 6 3 3 5 5]
1008
- [7 7 6 6 4 5 5]
1009
- [1 6 6 1 4 4 4]]
1068
+
1069
+ 0 1 2 3 4 5 6
1070
+ ┌───────┬───────┬───┬───────┐
1071
+ 0│ 4 4 2 2 4 │ 2 2 │
1072
+ │ ├───┬───┘ ├───────┤
1073
+ 1 4 4 7 4 4 │ 3 3 │
1074
+ ├───────┘ ├───┐ ├───┐ │
1075
+ 2│ 7 7 7 │ 3 │ 4 │ 5 │ 3 │
1076
+ │ ┌───────┤ └───┤ └───┤
1077
+ 3│ 7 │ 6 6 │ 3 3 │ 5 5 │
1078
+ │ └───┐ └───┬───┤ │
1079
+ 4│ 7 7 │ 6 6 │ 4 │ 5 5 │
1080
+ ├───┬───┘ ┌───┤ └───────┤
1081
+ 5│ 1 │ 6 6 │ 1 │ 4 4 4 │
1082
+ └───┴───────┴───┴───────────┘
1010
1083
  Solutions found: 1
1011
1084
  status: OPTIMAL
1012
- Time taken: 0.10 seconds
1085
+ Time taken: 0.15 seconds
1013
1086
  ```
1014
1087
 
1015
1088
  **Solved puzzle**
@@ -1420,17 +1493,17 @@ Code to utilize this package and solve the puzzle:
1420
1493
  import numpy as np
1421
1494
  from puzzle_solver import range_solver as solver
1422
1495
  clues = np.array([
1423
- [-1, 4, 2, -1, -1, 3, -1, -1, -1, 8, -1, -1, -1, -1, 6, -1],
1424
- [-1, -1, -1, -1, -1, 13, -1, 18, -1, -1, 14, -1, -1, 22, -1, -1],
1425
- [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1],
1426
- [-1, -1, -1, -1, 12, -1, 11, -1, -1, -1, 9, -1, -1, -1, -1, -1],
1427
- [7, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1],
1428
- [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
1429
- [-1, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, 5],
1430
- [-1, -1, -1, -1, -1, 9, -1, -1, -1, 9, -1, 4, -1, -1, -1, -1],
1431
- [-1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
1432
- [-1, -1, 10, -1, -1, 7, -1, -1, 13, -1, 10, -1, -1, -1, -1, -1],
1433
- [-1, 7, -1, -1, -1, -1, 6, -1, -1, -1, 6, -1, -1, 13, 5, -1],
1496
+ [' ', '4 ', '2 ', ' ', ' ', '3 ', ' ', ' ', ' ', '8 ', ' ', ' ', ' ', ' ', '6 ', ' '],
1497
+ [' ', ' ', ' ', ' ', ' ', '13', ' ', '18', ' ', ' ', '14', ' ', ' ', '22', ' ', ' '],
1498
+ [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '12', ' ', ' ', ' ', ' '],
1499
+ [' ', ' ', ' ', ' ', '12', ' ', '11', ' ', ' ', ' ', '9 ', ' ', ' ', ' ', ' ', ' '],
1500
+ ['7 ', ' ', ' ', ' ', ' ', ' ', '6 ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
1501
+ [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
1502
+ [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '12', ' ', ' ', ' ', ' ', ' ', '5 '],
1503
+ [' ', ' ', ' ', ' ', ' ', '9 ', ' ', ' ', ' ', '9 ', ' ', '4 ', ' ', ' ', ' ', ' '],
1504
+ [' ', ' ', ' ', ' ', '6 ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
1505
+ [' ', ' ', '10', ' ', ' ', '7 ', ' ', ' ', '13', ' ', '10', ' ', ' ', ' ', ' ', ' '],
1506
+ [' ', '7 ', ' ', ' ', ' ', ' ', '6 ', ' ', ' ', ' ', '6 ', ' ', ' ', '13', '5 ', ' '],
1434
1507
  ])
1435
1508
  binst = solver.Board(clues)
1436
1509
  solutions = binst.solve_and_print()
@@ -1438,20 +1511,34 @@ solutions = binst.solve_and_print()
1438
1511
  **Script Output**
1439
1512
  ```python
1440
1513
  Solution:
1441
- B . . B . . B . B . B . B . . .
1442
- . . B . . . . . . . . . . . . B
1443
- B . . . . B . . . . . . . . . .
1444
- . B . B . . . . . . . B . . . .
1445
- . . . . . B . . B . B . . . B .
1446
- . . B . . . . . . . . B . . . B
1447
- B . . . B . B . . . . . B . . .
1448
- . . . . . . . B . . B . . . B .
1449
- . B . . . B . . . B . B . . . .
1450
- . . . . . . B . . . . . . . . B
1451
- B . . . . . . B . . . . B . . .
1514
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
1515
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
1516
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
1517
+ 0│▒▒▒│ 4 2 │▒▒▒│ │ 3 │▒▒▒│ │▒▒▒│ 8 │▒▒▒│ │▒▒▒│ │ 6 │ │
1518
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1519
+ 1│ │ │▒▒▒│ │ │13 │ │18 │ │ │14 │ │ │22 │ │▒▒▒│
1520
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1521
+ 2│▒▒▒│ │ │ │ │▒▒▒│ │ │ │ │ │12 │ │ │ │ │
1522
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1523
+ 3│ │▒▒▒│ │▒▒▒│12 │ │11 │ │ │ │ 9 │▒▒▒│ │ │ │ │
1524
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1525
+ 4│ 7 │ │ │ │ │▒▒▒│ 6 │ │▒▒▒│ │▒▒▒│ │ │ │▒▒▒│ │
1526
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1527
+ 5│ │ │▒▒▒│ │ │ │ │ │ │ │ │▒▒▒│ │ │ │▒▒▒│
1528
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1529
+ 6│▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ │ │12 │ │ │▒▒▒│ │ │ 5 │
1530
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1531
+ 7│ │ │ │ │ │ 9 │ │▒▒▒│ │ 9 │▒▒▒│ 4 │ │ │▒▒▒│ │
1532
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1533
+ 8│ │▒▒▒│ │ │ 6 │▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ │ │ │ │
1534
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1535
+ 9│ │ │10 │ │ │ 7 │▒▒▒│ │13 │ │10 │ │ │ │ │▒▒▒│
1536
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1537
+ 10│▒▒▒│ 7 │ │ │ │ │ 6 │▒▒▒│ │ │ 6 │ │▒▒▒│13 │ 5 │ │
1538
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
1452
1539
  Solutions found: 1
1453
1540
  status: OPTIMAL
1454
- Time taken: 0.04 seconds
1541
+ Time taken: 0.07 seconds
1455
1542
  ```
1456
1543
 
1457
1544
  **Solved puzzle**
@@ -1568,23 +1655,40 @@ solutions = binst.solve_and_print()
1568
1655
  **Script Output**
1569
1656
  ```python
1570
1657
  Solution found
1571
- [['W' 'W' 'B' 'B' 'W' 'B' 'W' 'B' 'B' 'W' 'B' 'W' 'W' 'B']
1572
- ['B' 'B' 'W' 'W' 'B' 'W' 'B' 'W' 'W' 'B' 'W' 'B' 'B' 'W']
1573
- ['W' 'W' 'B' 'W' 'W' 'B' 'B' 'W' 'B' 'W' 'B' 'B' 'W' 'B']
1574
- ['W' 'B' 'W' 'B' 'B' 'W' 'W' 'B' 'W' 'W' 'B' 'W' 'B' 'B']
1575
- ['B' 'W' 'B' 'W' 'B' 'W' 'B' 'W' 'B' 'B' 'W' 'W' 'B' 'W']
1576
- ['B' 'W' 'W' 'B' 'W' 'B' 'B' 'W' 'B' 'B' 'W' 'B' 'W' 'W']
1577
- ['W' 'B' 'B' 'W' 'W' 'B' 'W' 'B' 'W' 'W' 'B' 'B' 'W' 'B']
1578
- ['B' 'W' 'B' 'W' 'B' 'W' 'B' 'W' 'W' 'B' 'B' 'W' 'B' 'W']
1579
- ['B' 'B' 'W' 'B' 'B' 'W' 'B' 'W' 'B' 'W' 'W' 'B' 'W' 'W']
1580
- ['W' 'W' 'B' 'B' 'W' 'B' 'W' 'B' 'W' 'B' 'W' 'W' 'B' 'B']
1581
- ['B' 'B' 'W' 'W' 'B' 'W' 'W' 'B' 'B' 'W' 'B' 'W' 'B' 'W']
1582
- ['B' 'W' 'B' 'W' 'W' 'B' 'B' 'W' 'W' 'B' 'W' 'B' 'W' 'B']
1583
- ['W' 'B' 'W' 'B' 'B' 'W' 'W' 'B' 'W' 'B' 'B' 'W' 'W' 'B']
1584
- ['W' 'B' 'W' 'B' 'W' 'B' 'W' 'B' 'B' 'W' 'W' 'B' 'B' 'W']]
1658
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1
1659
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3
1660
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
1661
+ 0│ │ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │ │▒▒▒│
1662
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1663
+ 1│▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│ │
1664
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1665
+ 2│ │ │▒▒▒│ │ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│
1666
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1667
+ 3│ │▒▒▒│ │▒▒▒│▒▒▒│ │ │▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│
1668
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1669
+ 4│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │ │▒▒▒│ │
1670
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1671
+ 5│▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │ │
1672
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1673
+ 6│ │▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│ │ │▒▒▒│▒▒▒│ │▒▒▒│
1674
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1675
+ 7│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │ │▒▒▒│▒▒▒│ │▒▒▒│ │
1676
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1677
+ 8│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │ │▒▒▒│ │ │
1678
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1679
+ 9│ │ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │ │▒▒▒│▒▒▒│
1680
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1681
+ 10│▒▒▒│▒▒▒│ │ │▒▒▒│ │ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │
1682
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1683
+ 11│▒▒▒│ │▒▒▒│ │ │▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│ │▒▒▒│
1684
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1685
+ 12│ │▒▒▒│ │▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│ │ │▒▒▒│
1686
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1687
+ 13│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │ │▒▒▒│▒▒▒│ │
1688
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
1585
1689
  Solutions found: 1
1586
1690
  status: OPTIMAL
1587
- Time taken: 0.01 seconds
1691
+ Time taken: 0.02 seconds
1588
1692
  ```
1589
1693
 
1590
1694
  **Solved puzzle**
@@ -1639,24 +1743,43 @@ solutions = binst.solve_and_print()
1639
1743
  ```
1640
1744
  **Script Output**
1641
1745
  ```python
1642
- [[' ' ' ' ' ' ' ' ' ' ' ' '┏━' '━━' '━━' '━━' '━━' '━━' '━┒' '┏━' '━┒']
1643
- [' ' ' ' ' ' ' ' ' ' ' ' '┃ ' ' ' '┏━' '━━' '━┒' ' ' '┗━' '━┛' '┃ ']
1644
- [' ' ' ' ' ' ' ' ' ' ' ' '┃ ' ' ' '┃ ' ' ' '┗━' '━━' '━━' '━━' '━┛']
1645
- [' ' ' ' '┏━' '━┒' '┏━' '━┒' '┃ ' '┏━' '━┛' ' ' ' ' ' ' ' ' ' ' ' ']
1646
- ['┏━' '━━' '━┛' '┃ ' '┃ ' '┗━' '━┛' '┗━' '━┒' ' ' ' ' ' ' ' ' '┏━' '━┒']
1647
- ['┗━' '━━' '━┒' '┗━' '━┛' ' ' ' ' '┏━' '━┛' ' ' ' ' ' ' '┏━' '━┛' '┃ ']
1648
- [' ' ' ' '┃ ' ' ' ' ' ' ' '┏━' '━┛' '┏━' '━━' '━━' '━━' '━┛' ' ' '┃ ']
1649
- [' ' '┏━' '━┛' ' ' ' ' ' ' '┗━' '━━' '━┛' ' ' ' ' ' ' '┏━' '━━' '━┛']
1650
- [' ' '┗━' '━┒' ' ' ' ' ' ' ' ' ' ' '┏━' '━━' '━━' '━┒' '┃ ' '┏━' '━┒']
1651
- ['┏━' '━━' '━┛' ' ' ' ' ' ' ' ' ' ' '┃ ' '┏━' '━┒' '┗━' '━┛' '┃ ' '┃ ']
1652
- ['┃ ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '┗━' '━┛' '┗━' '━┒' ' ' '┃ ' '┃ ']
1653
- ['┃ ' ' ' ' ' ' ' ' ' ' ' ' ' '┏━' '━━' '━━' '━━' '━┛' '┏━' '━┛' '┃ ']
1654
- ['━┛' ' ' ' ' ' ' ' ' ' ' ' ' '┗━' '━━' '━━' '━━' '━━' '━┛' '┏━' '━┛']
1655
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '┗━' '━┒']
1656
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '┏━' '━┛']]
1746
+ Solution found
1747
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
1748
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
1749
+
1750
+ 0 . . . . . . ┌───────────────────────┐ ┌───┐
1751
+ │ │ │ │
1752
+ 1 . . . . . . │ . ┌───────┐ . └───┘ │
1753
+ │ │ │ │
1754
+ 2 . . . . . . │ . │ . └───────────────┘
1755
+ │ │
1756
+ 3 . . ┌───┐ ┌───┐ │ ┌───┘ . . . . . .
1757
+ │ │ │ │ │ │
1758
+ 4 ┌───────┘ │ │ └───┘ └───┐ . . . . ┌───┐
1759
+ │ │ │ │ │ │
1760
+ 5 └───────┐ └───┘ . . ┌───┘ . . . ┌───┘ │
1761
+ │ │ │ │
1762
+ 6 . . │ . . . ┌───┘ ┌───────────────┘ . │
1763
+ │ │ │ │
1764
+ 7 . ┌───┘ . . . └───────┘ . . . ┌───────┘
1765
+ │ │
1766
+ 8 . └───┐ . . . . . ┌───────────┐ │ ┌───┐
1767
+ │ │ │ │ │ │
1768
+ 9 ┌───────┘ . . . . . │ ┌───┐ └───┘ │ │
1769
+ │ │ │ │ │ │
1770
+ 10 │ . . . . . . . └───┘ └───┐ . │ │
1771
+ │ │ │ │
1772
+ 11 │ . . . . . . ┌───────────────┘ ┌───┘ │
1773
+ │ │ │ │
1774
+ 12──┘ . . . . . . └───────────────────┘ ┌───┘
1775
+
1776
+ 13 . . . . . . . . . . . . . └───┐
1777
+
1778
+ 14 . . . . . . . . . . . . . ┌───┘
1779
+
1657
1780
  Solutions found: 1
1658
1781
  status: OPTIMAL
1659
- Time taken: 1.04 seconds
1782
+ Time taken: 1.01 seconds
1660
1783
  ```
1661
1784
 
1662
1785
  **Solved puzzle**
@@ -1711,24 +1834,42 @@ solutions = binst.solve_and_print()
1711
1834
  **Script Output**
1712
1835
  ```python
1713
1836
  Solution found
1714
- [[' ' 'B' ' ' ' ' ' ' ' ' ' ' ' ' 'B' ' ' 'B' ' ' ' ' 'B' 'B']
1715
- [' ' 'B' ' ' ' ' 'B' 'B' ' ' 'B' 'B' ' ' 'B' ' ' ' ' 'B' 'B']
1716
- [' ' 'B' 'B' ' ' 'B' 'B' ' ' ' ' ' ' 'B' 'B' ' ' ' ' ' ' 'B']
1717
- ['B' 'B' 'B' 'B' ' ' ' ' 'B' 'B' 'B' ' ' ' ' ' ' 'B' ' ' 'B']
1718
- [' ' 'B' 'B' ' ' ' ' 'B' ' ' 'B' 'B' 'B' ' ' 'B' 'B' 'B' ' ']
1719
- [' ' 'B' ' ' 'B' ' ' 'B' 'B' ' ' 'B' ' ' ' ' 'B' 'B' 'B' 'B']
1720
- ['B' ' ' 'B' ' ' ' ' 'B' 'B' 'B' 'B' ' ' ' ' ' ' ' ' ' ' ' ']
1721
- [' ' ' ' 'B' ' ' 'B' 'B' 'B' 'B' 'B' ' ' ' ' ' ' 'B' ' ' 'B']
1722
- [' ' 'B' 'B' ' ' ' ' ' ' ' ' 'B' 'B' 'B' 'B' 'B' ' ' 'B' ' ']
1723
- ['B' 'B' 'B' 'B' 'B' 'B' ' ' ' ' ' ' 'B' 'B' ' ' ' ' 'B' ' ']
1724
- [' ' 'B' ' ' 'B' 'B' ' ' 'B' ' ' 'B' 'B' ' ' ' ' ' ' 'B' ' ']
1725
- ['B' 'B' ' ' ' ' 'B' ' ' ' ' 'B' 'B' 'B' ' ' 'B' 'B' 'B' 'B']
1726
- [' ' ' ' 'B' ' ' 'B' ' ' 'B' ' ' 'B' 'B' 'B' 'B' 'B' ' ' 'B']
1727
- [' ' ' ' 'B' 'B' ' ' ' ' 'B' ' ' 'B' 'B' ' ' 'B' 'B' ' ' ' ']
1728
- ['B' ' ' 'B' ' ' ' ' 'B' 'B' ' ' ' ' ' ' ' ' ' ' 'B' 'B' 'B']]
1837
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
1838
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
1839
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
1840
+ 0│ │▒▒▒│ 2 1 │ │ │ │ 3 │▒▒▒│ 4 │▒▒▒│ 2 │ │▒▒▒│▒▒▒│
1841
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1842
+ 1│ 3 │▒▒▒│ │ │▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │ 2 │▒▒▒│▒▒▒│
1843
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1844
+ 2│ 4 │▒▒▒│▒▒▒│ 5 │▒▒▒│▒▒▒│ │ │ 5 │▒▒▒│▒▒▒│ 3 2 5 │▒▒▒│
1845
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1846
+ 3│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ 4 │ │▒▒▒│▒▒▒│▒▒▒│ │ │ │▒▒▒│ 5 │▒▒▒│
1847
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1848
+ 4│ │▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │
1849
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1850
+ 5│ 3 │▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ 7 │▒▒▒│ 4 │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│
1851
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1852
+ 6│▒▒▒│ │▒▒▒│ │ 5 │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ 1 │ 3 │ 4 │ 5 │ │
1853
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1854
+ 7│ │ 5 │▒▒▒│ 4 │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ 3 │ │▒▒▒│ │▒▒▒│
1855
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1856
+ 8│ 3 │▒▒▒│▒▒▒│ │ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │
1857
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1858
+ 9│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ 4 │ 6 │▒▒▒│▒▒▒│ 3 │ │▒▒▒│ │
1859
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1860
+ 10│ 5 │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │ 3 │ 5 │▒▒▒│ │
1861
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1862
+ 11│▒▒▒│▒▒▒│ │ 5 │▒▒▒│ 5 │ 3 │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│
1863
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1864
+ 12│ 2 │ │▒▒▒│ │▒▒▒│ 4 │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│
1865
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1866
+ 13│ 1 │ │▒▒▒│▒▒▒│ │ │▒▒▒│ 5 │▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ 6 │ │
1867
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1868
+ 14│▒▒▒│ │▒▒▒│ │ 2 │▒▒▒│▒▒▒│ │ 2 │ │ │ │▒▒▒│▒▒▒│▒▒▒│
1869
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
1729
1870
  Solutions found: 1
1730
1871
  status: OPTIMAL
1731
- Time taken: 0.01 seconds
1872
+ Time taken: 0.02 seconds
1732
1873
  ```
1733
1874
 
1734
1875
  **Solved puzzle**
@@ -1844,17 +1985,28 @@ solutions = binst.solve_and_print()
1844
1985
  **Script Output**
1845
1986
  ```python
1846
1987
  Solution found
1847
- [['┏━' '━━' '━━' '━━' '━┒' '┏━' '━━' '━┒' '┏━' '━━' '━━' '━┒']
1848
- ['┃ ' '┏━' '━━' '━┒' '┗━' '━┛' '┏━' '━┛' '┃ ' '┏━' '━┒' '┃ ']
1849
- ['┗━' '━┛' ' ' '┃ ' '┏━' '━┒' '┗━' '━━' '━┛' '┃ ' '┃ ' '┃ ']
1850
- [' ' '┏━' '━━' '━┛' '┃ ' '┃ ' ' ' '┏━' '━━' '━┛' '┃ ' '┃ ']
1851
- [' ' '┃ ' '┏━' '━━' '━┛' '┗━' '━┒' '┃ ' '┏━' '━┒' '┗━' '━┛']
1852
- ['┏━' '━┛' '┃ ' ' ' '┏━' '━┒' '┃ ' '┃ ' '┃ ' '┗━' '━━' '━┒']
1853
- ['┃ ' ' ' '┗━' '━━' '━┛' '┃ ' '┃ ' '┗━' '━┛' ' ' ' ' '┃ ']
1854
- ['┗━' '━━' '━━' '━━' '━━' '━┛' '┗━' '━━' '━━' '━━' '━━' '━┛']]
1988
+ 0 0 0 0 0 0 0 0 0 0 1 1
1989
+ 0 1 2 3 4 5 6 7 8 9 0 1
1990
+
1991
+ 0 B───────────W───┐ ┌───W───┐ B───────────B
1992
+ │ │ │ │ │ │
1993
+ 1 │ ┌───────B └───┘ ┌───┘ │ ┌───┐ │
1994
+ │ │ │ │ │ │ │ │
1995
+ 2 └───┘ . │ ┌───┐ └───────B │ │ │
1996
+ │ │ │ │ │ │
1997
+ 3 . B───────B │ W . B───────B W │
1998
+ │ │ │ │ │ │
1999
+ 4 . │ B───────B └───┐ │ ┌───┐ └───┘
2000
+ │ │ │ │ │ │
2001
+ 5 ┌───┘ │ . ┌───┐ │ W W └───────B
2002
+ │ │ │ │ │ │ │ │
2003
+ 6 │ . B───────┘ │ │ └───┘ . . │
2004
+ │ │ │ │
2005
+ 7 B───────────────────B B───────────────────B
2006
+
1855
2007
  Solutions found: 1
1856
2008
  status: OPTIMAL
1857
- Time taken: 0.98 seconds
2009
+ Time taken: 0.12 seconds
1858
2010
  ```
1859
2011
 
1860
2012
  **Solved puzzle**
@@ -2480,21 +2632,39 @@ solutions = binst.solve_and_print()
2480
2632
 
2481
2633
  ```python
2482
2634
  Solution found
2483
- [['0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '1' '1' '1']
2484
- ['0' '0' '0' '0' '0' '0' '0' '0' '1' '0' '1' '1' '1' '1' '0']
2485
- ['0' '0' '0' '0' '0' '0' '0' '0' '0' '1' '0' '0' '0' '0' '0']
2486
- ['0' '0' '0' '0' '0' '1' '1' '0' '0' '0' '0' '0' '0' '0' '0']
2487
- ['1' '1' '0' '0' '0' '0' '0' '0' '1' '1' '0' '0' '0' '0' '1']
2488
- ['0' '0' '0' '0' '0' '0' '1' '1' '1' '0' '0' '0' '0' '0' '0']
2489
- ['1' '1' '1' '0' '0' '1' '1' '0' '1' '1' '0' '1' '1' '0' '1']
2490
- ['1' '1' '1' '0' '0' '0' '1' '1' '0' '1' '1' '1' '1' '0' '1']
2491
- ['1' '0' '0' '0' '0' '0' '1' '1' '1' '0' '0' '0' '1' '0' '0']
2492
- ['0' '0' '0' '0' '1' '1' '0' '0' '0' '0' '0' '0' '1' '0' '0']
2493
- ['0' '0' '1' '1' '0' '0' '0' '0' '1' '1' '0' '0' '1' '1' '1']
2494
- ['0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '0' '1' '1' '1']
2495
- ['0' '1' '0' '0' '0' '0' '0' '1' '1' '0' '1' '1' '1' '1' '0']
2496
- ['1' '1' '1' '1' '1' '0' '1' '1' '1' '0' '0' '0' '0' '0' '0']
2497
- ['1' '1' '1' '1' '1' '1' '1' '1' '1' '1' '0' '0' '0' '1' '1']]
2635
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
2636
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
2637
+ ┌───────────────┬───────────┬───────────────┬───┬───────────┐
2638
+ 0│ │ │ │ │ O O O
2639
+ │ ┌───────────┘ ┌───┬───┴───┐ ┌───┐ │ └───┐ ┌───┤
2640
+ 1│ │ │ │ │ O │ │ O O O O │ │
2641
+ │ └───┐ ┌───┬───┘ └───┬───┴───┤ ├───┴───────┼───┘ │
2642
+ 2│ │ │ │ │ │ O │ │ │
2643
+ │ ┌───┴───┘ ├───┐ │ ├───┴───┐ ┌───┘ │
2644
+ 3│ │ │ │ O O │ │ │ │ │
2645
+ │ └───┐ │ ├───────┘ ┌───┴───┐ │ └───┬───┐ │
2646
+ 4│ O O │ │ │ │ O O │ │ │ │ O
2647
+ ├───┬───┘ ┌───┘ │ ┌───────┴───┬───┘ │ │ ├───┤
2648
+ 5│ │ │ │ │ O O O │ │ │ │ │
2649
+ │ │ │ │ └───┬───┬───┘ ┌───┤ │ │ │
2650
+ 6│ O │ O O │ │ O O │ │ O O │ │ O O │ │ O │
2651
+ ├───┴───┐ ├───────┴───┬───┘ ├───┬───┘ └───┐ │ │ │
2652
+ 7│ O O │ O │ │ O O │ │ O O O │ O │ │ O │
2653
+ │ ┌───┼───┴───────┐ │ ┌───┴───┼───────────┼───┤ └───┤
2654
+ 8│ O │ │ │ │ O │ O O │ │ O │ │
2655
+ ├───┘ └───┐ ┌───┘ ├───┼───────┘ ┌───────┤ │ ┌───┤
2656
+ 9│ │ │ O O │ │ │ │ O │ │ │
2657
+ │ ┌───┘ ├───────┤ └───┐ ├───────┤ └───┤ │
2658
+ 10│ │ O O │ │ │ O O │ │ O O │ O │
2659
+ │ ├───┬───┘ ┌───┘ └───┬───┴───────┤ ┌───┴───┤
2660
+ 11│ │ │ │ │ │ O │ O O │
2661
+ ├───┐ │ └───────┴───────┐ │ ┌───────┼───┴───┬───┤
2662
+ 12│ │ O │ │ O O │ │ O O │ O O │ │
2663
+ │ └───┴───┬───────┐ ┌───┘ ├───┴───────┴───────┘ │
2664
+ 13│ O O O │ O O │ │ O O O │ │
2665
+ │ └───┬───┘ ├───────┬───┴───┐ ┌───────┤
2666
+ 14│ O O O O │ O O │ O O │ O O │ │ O O │
2667
+ └───────────────┴───────┴───────┴───────┴───────────┴───────┘
2498
2668
  Solutions found: 1
2499
2669
  status: OPTIMAL
2500
2670
  Time taken: 0.02 seconds
@@ -2561,21 +2731,39 @@ Note: `solver.Board` accepts an optional `connection_count=N` parameter to speci
2561
2731
 
2562
2732
  ```python
2563
2733
  Solution found
2564
- [[' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
2565
- ['R' 'L' 'D' 'R' 'L' 'R' 'L' ' ' ' ' ' ' ' ' ' ' 'D' 'R' 'L']
2566
- [' ' ' ' 'U' ' ' ' ' 'R' 'L' ' ' ' ' ' ' ' ' ' ' 'U' 'R' 'L']
2567
- ['D' ' ' ' ' ' ' ' ' 'R' 'L' ' ' ' ' 'D' ' ' ' ' ' ' ' ' ' ']
2568
- ['U' ' ' ' ' ' ' ' ' 'R' 'L' ' ' ' ' 'U' ' ' ' ' ' ' ' ' ' ']
2569
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'D' ' ']
2570
- [' ' ' ' 'D' ' ' ' ' ' ' 'R' 'L' ' ' 'D' ' ' ' ' ' ' 'U' ' ']
2571
- [' ' 'D' 'U' ' ' 'R' 'L' ' ' ' ' ' ' 'U' ' ' 'R' 'L' 'D' ' ']
2572
- [' ' 'U' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'U' ' ']
2573
- [' ' ' ' 'R' 'L' ' ' ' ' ' ' ' ' ' ' ' ' 'D' ' ' 'R' 'L' 'D']
2574
- [' ' ' ' 'D' ' ' ' ' ' ' 'R' 'L' ' ' ' ' 'U' ' ' ' ' ' ' 'U']
2575
- ['D' 'D' 'U' 'R' 'L' 'D' 'D' 'R' 'L' ' ' ' ' ' ' ' ' 'R' 'L']
2576
- ['U' 'U' ' ' ' ' ' ' 'U' 'U' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
2577
- [' ' ' ' 'R' 'L' ' ' ' ' ' ' ' ' ' ' ' ' 'D' ' ' ' ' ' ' ' ']
2578
- ['R' 'L' 'R' 'L' ' ' 'R' 'L' ' ' ' ' ' ' 'U' ' ' ' ' ' ' ' ']]
2734
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
2735
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
2736
+ ┌───────────────────┬───────────────────────────────┬───────┐
2737
+ 0│ . . . . . . . . . . . . . . .
2738
+ │ ┌───────┬───┐ └───┐ ┌───────────────────┐ └───┐ │
2739
+ 1│ O─┼─O O O─┼─O O─┼─O . . . . . O O─┼─O
2740
+ │ │ ┌─┼─┘ └───┐ ├───┘ └─┼─────┤ │
2741
+ 2│ . . O . . O─┼─O . . . . . O O─┼─O
2742
+ │ │ │ └───┤ ┌───┐ ┌───────────────┘ │
2743
+ 3│ O . . . . O─┼─O . . O . . . . .
2744
+ ├─┼─┤ └───────────┐ ├───────┘ └─┼─┴───────────┐ │
2745
+ 4│ O . . . . O─┼─O . . O . . . . .
2746
+ │ └───────┐ │ └───┐ ┌───────────┐ ┌───┘ │
2747
+ 5│ . . . . . . . . . . . . . O .
2748
+ │ ┌───┘ │ ├───┘ │ └─────┼─┐ │
2749
+ 6│ . . │ O . . │ . O─┼─O . O . │ . . O │ . │
2750
+ │ └─┼─────────┼───────┘ ┌─────┼─┐ │ ┌───┐ │ │
2751
+ 7│ . O O . O─┼─O . . │ . O │ . │ O─┼─O │ O │ . │
2752
+ ├─────┼─┐ ┌───┴───────────┘ │ └───┘ ├─┼─┤ │
2753
+ 8│ . O │ . . │ . . . . . . │ . . . │ O │ . │
2754
+ │ │ ┌───┘ └───┐ │ │ │
2755
+ 9│ . . │ O─┼─O . . . . . . O │ . O─┼─O │ O │
2756
+ │ ┌───┴───┘ ┌───────────┬───┐ ┌─┼─┴───────┘ └─┼─┤
2757
+ 10│ . │ . O . │ . . O─┼─O │ . . │ O . . . O │
2758
+ │ └─────┼─┐ │ │ │ ┌───┘ ┌───────┐ │
2759
+ 11│ O O O │ O─┼─O O O │ O─┼─O │ . . . │ . O─┼─O │
2760
+ ├─┼─┬─┼─┐ ├───┘ ┌─┼─┬─┼─┤ └───┤ ┌───────┘ │ │
2761
+ 12│ O │ O │ . │ . . │ O │ O │ . . │ . │ . . . . │ . │
2762
+ │ │ │ │ ┌───┘ │ └───┐ └───┘ │ │
2763
+ 13│ . │ . │ O─┼─O │ . . │ . . │ . . O . . . │ . │
2764
+ │ │ └───┤ │ │ └─────────┼─┐ └───┤
2765
+ 14│ O─┼─O O─┼─O │ . O─┼─O . . . O │ . . . . │
2766
+ └───┴───────┴───┴───────┴───────────────────┴───────────────┘
2579
2767
  Solutions found: 1
2580
2768
  status: OPTIMAL
2581
2769
  Time taken: 0.01 seconds
@@ -2642,24 +2830,43 @@ solutions = binst.solve_and_print()
2642
2830
 
2643
2831
  ```python
2644
2832
  Solution found
2645
- [[' ' ' ' ' ' ' ' ' ' 'S' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
2646
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'S' ' ' 'S' ' ' ' ']
2647
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'S' ' ' ' ']
2648
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'S' ' ' ' ']
2649
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
2650
- [' ' 'S' 'S' 'S' 'S' ' ' ' ' ' ' ' ' ' ' ' ' 'S' 'S' 'S' ' ']
2651
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
2652
- [' ' ' ' 'S' ' ' ' ' 'S' 'S' 'S' 'S' 'S' ' ' ' ' 'S' 'S' 'S']
2653
- ['S' ' ' 'S' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
2654
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'S' ' ' ' ' 'S' ' ' ' ' ' ']
2655
- ['S' 'S' 'S' 'S' ' ' ' ' ' ' ' ' 'S' ' ' ' ' ' ' ' ' ' ' ' ']
2656
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'S' ' ' ' ' ' ' ' ']
2657
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' 'S' 'S' ' ' 'S' ' ' ' ' ' ' ' ']
2658
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
2659
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'S']]
2833
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
2834
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
2835
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
2836
+ 0│ │ │ │ │ │▒▒▒│ │ │ │ │ │ │ │ │ │
2837
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2838
+ 1│ │ │ │ │ │ │ │ │ │ │▒▒▒│ │▒▒▒│ │ │
2839
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2840
+ 2│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒│ │ │
2841
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2842
+ 3│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒│ │ │
2843
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2844
+ 4│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
2845
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2846
+ 5│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│ │
2847
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2848
+ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
2849
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2850
+ 7│ │ │▒▒▒│ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │▒▒▒│▒▒▒│▒▒▒│
2851
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2852
+ 8│▒▒▒│ │▒▒▒│ │ │ │ │ │ │ │ │ │ │ │ │
2853
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2854
+ 9│ │ │ │ │ │ │ │ │▒▒▒│ │ │▒▒▒│ │ │ │
2855
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2856
+ 10│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │▒▒▒│ │ │ │ │ │ │
2857
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2858
+ 11│ │ │ │ │ │ │ │ │ │ │▒▒▒│ │ │ │ │
2859
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2860
+ 12│ │ │ │ │ │ │ │▒▒▒│▒▒▒│ │▒▒▒│ │ │ │ │
2861
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2862
+ 13│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
2863
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2864
+ 14│ │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒│
2865
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
2660
2866
  Solutions found: 1
2661
2867
  status: OPTIMAL
2662
- Time taken: 0.12 seconds
2868
+ Time taken: 0.09 seconds
2869
+ Solution found
2663
2870
  ```
2664
2871
 
2665
2872
  **Solved puzzle**
@@ -2707,18 +2914,33 @@ solutions = binst.solve_and_print()
2707
2914
 
2708
2915
  ```python
2709
2916
  Solution found
2710
- [['X' 'X' ' ' 'X' ' ' ' ' ' ' 'X' ' ' ' ' ' ' 'X']
2711
- [' ' ' ' ' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ']
2712
- ['X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
2713
- [' ' ' ' ' ' ' ' 'X' ' ' 'X' ' ' ' ' ' ' ' ' ' ']
2714
- [' ' ' ' 'X' 'X' ' ' ' ' ' ' 'X' ' ' 'X' ' ' 'X']
2715
- ['X' ' ' ' ' ' ' 'X' ' ' ' ' 'X' ' ' ' ' 'X' 'X']
2716
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'X' ' ']
2717
- [' ' ' ' ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
2718
- [' ' ' ' 'X' ' ' ' ' 'X' ' ' ' ' 'X' ' ' 'X' ' ']
2719
- [' ' ' ' ' ' 'X' ' ' ' ' 'X' ' ' ' ' ' ' ' ' 'X']
2720
- [' ' ' ' 'X' ' ' ' ' 'X' 'X' 'X' 'X' 'X' 'X' 'X']
2721
- ['X' ' ' ' ' 'X' ' ' ' ' ' ' 'X' 'X' 'X' 'X' 'X']]
2917
+ 0 0 0 0 0 0 0 0 0 0 1 1
2918
+ 0 1 2 3 4 5 6 7 8 9 0 1
2919
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
2920
+ 0│▒▒▒│▒▒▒│ │▒▒▒│ │ │ │▒▒▒│ │ │ │▒▒▒│
2921
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2922
+ 1│ │ │ │ │ │▒▒▒│ │ │ │ │ │ │
2923
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2924
+ 2│▒▒▒│ │ │ │ │ │ │ │ │ │ │ │
2925
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2926
+ 3│ │ │ │ │▒▒▒│ │▒▒▒│ │ │ │ │ │
2927
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2928
+ 4│ │ │▒▒▒│▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ │▒▒▒│
2929
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2930
+ 5│▒▒▒│ │ │ │▒▒▒│ │ │▒▒▒│ │ │▒▒▒│▒▒▒│
2931
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2932
+ 6│ │ │ │ │ │ │ │ │ │ │▒▒▒│ │
2933
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2934
+ 7│ │ │ │▒▒▒│ │ │ │ │ │ │ │ │
2935
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2936
+ 8│ │ │▒▒▒│ │ │▒▒▒│ │ │▒▒▒│ │▒▒▒│ │
2937
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2938
+ 9│ │ │ │▒▒▒│ │ │▒▒▒│ │ │ │ │▒▒▒│
2939
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2940
+ 10│ │ │▒▒▒│ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│
2941
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2942
+ 11│▒▒▒│ │ │▒▒▒│ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│
2943
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
2722
2944
  Solutions found: 1
2723
2945
  status: OPTIMAL
2724
2946
  Time taken: 0.00 seconds
@@ -3133,26 +3355,48 @@ As the instructions say, the solution to this puzzle is not garunteed to be uniq
3133
3355
 
3134
3356
  ```python
3135
3357
  Solution found
3136
- [[' ' ' ' ' ' ' ' 'O' ' ' ' ' ' ']
3137
- [' ' ' ' ' ' ' ' ' ' 'O' ' ' ' ']
3138
- [' ' 'O' ' ' ' ' ' ' ' ' ' ' ' ']
3139
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3140
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3141
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3142
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3143
- [' ' ' ' 'O' ' ' 'O' ' ' ' ' ' ']]
3358
+
3359
+ 0 1 2 3 4 5 6 7
3360
+ ┌───┬───┬───┬───┬───┬───┬───┬───┐
3361
+ 0│ │ │ │ │ O │ │ │ │
3362
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3363
+ 1│ │ │ │ │ │ O │ │ │
3364
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3365
+ 2│ │ O │ │ │ │ │ │ │
3366
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3367
+ 3│ │ │ │ │ │ │ │ │
3368
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3369
+ 4│ │ │ │ │ │ │ │ │
3370
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3371
+ 5│ │ │ │ │ │ │ │ │
3372
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3373
+ 6│ │ │ │ │ │ │ │ │
3374
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3375
+ 7│ │ │ O │ │ O │ │ │ │
3376
+ └───┴───┴───┴───┴───┴───┴───┴───┘
3144
3377
  Solution found
3145
- [[' ' ' ' ' ' ' ' 'O' ' ' ' ' ' ']
3146
- [' ' ' ' ' ' ' ' ' ' 'O' ' ' ' ']
3147
- [' ' 'O' ' ' 'O' ' ' ' ' ' ' ' ']
3148
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3149
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3150
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3151
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3152
- [' ' ' ' 'O' ' ' 'O' ' ' ' ' ' ']]
3378
+
3379
+ 0 1 2 3 4 5 6 7
3380
+ ┌───┬───┬───┬───┬───┬───┬───┬───┐
3381
+ 0│ │ │ │ │ O │ │ │ │
3382
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3383
+ 1│ │ │ │ │ │ O │ │ │
3384
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3385
+ 2│ │ O │ │ O │ │ │ │ │
3386
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3387
+ 3│ │ │ │ │ │ │ │ │
3388
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3389
+ 4│ │ │ │ │ │ │ │ │
3390
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3391
+ 5│ │ │ │ │ │ │ │ │
3392
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3393
+ 6│ │ │ │ │ │ │ │ │
3394
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3395
+ 7│ │ │ O │ │ O │ │ │ │
3396
+ └───┴───┴───┴───┴───┴───┴───┴───┘
3153
3397
  Solutions found: 2
3154
3398
  status: OPTIMAL
3155
- Time taken: 30.33 seconds
3399
+ Time taken: 24.53 seconds
3156
3400
  ```
3157
3401
 
3158
3402
  **Solved puzzle**
@@ -3310,18 +3554,29 @@ solutions = binst.solve_and_print()
3310
3554
 
3311
3555
  ```python
3312
3556
  Solution found
3313
- [
3314
- [ / \ \ / / / / \ \ \ / \ ]
3315
- [ \ \ \ \ \ \ / \ / / \ \ ]
3316
- [ \ \ \ / / \ / \ \ \ \ / ]
3317
- [ \ / \ \ / \ / / \ / \ / ]
3318
- [ / \ \ / \ \ \ / / / \ \ ]
3319
- [ / \ \ / \ \ \ / \ / \ \ ]
3320
- [ / \ \ / \ / / / \ / / \ ]
3321
- [ \ \ \ \ \ / / / \ / \ \ ]
3322
- [ / / / \ \ / / \ \ / \ \ ]
3323
- [ \ \ / / / \ / \ / \ \ / ]
3324
- ]
3557
+ 0 0 0 0 0 0 0 0 0 0 1 1
3558
+ 0 1 2 3 4 5 6 7 8 9 0 1
3559
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
3560
+ 0│ / │ \ \ / / / / │ \ \ \ / │ \ │
3561
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3562
+ 1│ \ \ \ \ \ │ \ │ / │ \ │ / / \ \
3563
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3564
+ 2│ \ \ \ / / \ / \ │ \ │ \ │ \ │ / │
3565
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3566
+ 3│ \ / \ \ / \ / │ / │ \ │ / │ \ │ / │
3567
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3568
+ 4│ / │ \ │ \ │ / │ \ │ \ │ \ │ / │ / │ / │ \ │ \ │
3569
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3570
+ 5│ / │ \ │ \ │ / │ \ │ \ │ \ │ / │ \ │ / │ \ │ \ │
3571
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3572
+ 6│ / │ \ │ \ │ / │ \ │ / │ / │ / │ \ │ / │ / │ \ │
3573
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3574
+ 7│ \ │ \ │ \ │ \ │ \ │ / │ / │ / │ \ │ / │ \ │ \ │
3575
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3576
+ 8│ / │ / │ / │ \ │ \ │ / │ / │ \ │ \ │ / │ \ │ \ │
3577
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3578
+ 9│ \ │ \ │ / │ / │ / │ \ │ / │ \ │ / │ \ │ \ │ / │
3579
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
3325
3580
  Solutions found: 1
3326
3581
  status: OPTIMAL
3327
3582
  Time taken: 0.06 seconds
@@ -3491,49 +3746,49 @@ Solution found
3491
3746
  0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
3492
3747
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
3493
3748
  ┌───┬───────────────┬───┬───────┬───────────┬───────────┬───┬───┬───────┬───────┐
3494
- 0│ X │ │ X │ X │ X │ X │ X │ X │ X X │
3749
+ 0│▒▒▒│ │▒▒▒│ ▒▒▒│ ▒▒▒ │▒▒▒ │▒▒▒│ │▒▒▒ │▒▒▒ ▒▒▒│
3495
3750
  │ └───┐ │ │ ┌───┘ ┌───┬───┴───┐ ┌───┘ │ │ ├───────┤
3496
- 1│ X │ X │ X │ │ X │ X │ X │ X │ X │
3751
+ 1│▒▒▒ │▒▒▒ │▒▒▒│ │▒▒▒ │▒▒▒│ ▒▒▒│ ▒▒▒│ │▒▒▒ │ │
3497
3752
  ├───────┴───┐ ├───┘ ├───────┘ │ ┌───┤ ├───┬───┘ └───┬───┘ │
3498
- 2│ X │ X │ X │ X │ X │ │ X │ X │ X │
3753
+ 2│ ▒▒▒│ ▒▒▒│ ▒▒▒│ ▒▒▒ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒
3499
3754
  │ ┌───┐ ├───────┴───┬───┴───────┬───┴───┤ └───┘ │ └───────┐ │
3500
- 3│ X │ X │X │ X X │ X │ X │ X │
3755
+ 3│▒▒▒│▒▒▒│ ▒▒▒ │▒▒▒ ▒▒▒│ ▒▒▒│ ▒▒▒ │▒▒▒│
3501
3756
  │ │ └───┤ ┌───────┤ │ └───┐ ┌───┤ ┌───────────┴───┤
3502
- 4│ │ X │ X │ │ │ X │ X │ X │ X X │
3757
+ 4│ │ ▒▒▒│▒▒▒│ │ │ ▒▒▒│▒▒▒│ ▒▒▒│▒▒▒ ▒▒▒│
3503
3758
  │ ├───────┴───┘ │ ┌───────┴───────┐ │ │ └───┐ │ ┌───────┐ │
3504
- 5│ │ X X │ X X │ │ X X │ │ X X
3759
+ 5│ │▒▒▒ ▒▒▒ │▒▒▒ ▒▒▒ │ │ │▒▒▒ ▒▒▒││▒▒▒ ▒▒▒│
3505
3760
  ├───┴───┬───────────────┼───┼───────────┬───┴───┼───┘ ┌───┴───┼───┴───┬───┴───┤
3506
- 6│ X │ X │ X │ X │ X │ X X │ X │
3761
+ 6│ ▒▒▒│ ▒▒▒ │▒▒▒│ ▒▒▒│ ▒▒▒│ ▒▒▒│▒▒▒ ▒▒▒│
3507
3762
  │ │ ┌───┬───────┤ │ ┌───┤ ┌───┴───┬───┴───┐ ├───┐ │ │
3508
- 7│ X │ X │ X │ │ X │ │ X │ X │ X X │ │ X │ X │
3763
+ 7│▒▒▒ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒ │▒▒▒ ▒▒▒││▒▒▒│ ▒▒▒│
3509
3764
  ├───┬───┴───┘ │ ┌───┴───┘ │ │ └───┐ └───┬───┘ │ └───┤ ┌───┤
3510
- 8│ X │ │ X │ X │ │ │ │ X │ X │ │ │
3765
+ 8│▒▒▒│ │▒▒▒│ ▒▒▒│ │ │ │ ▒▒▒│ ▒▒▒│ │ │
3511
3766
  │ └───┐ ┌───┤ ├───┬───────────┘ │ ┌───┘ ├───┬───┘ └───┘ │
3512
- 9│ X │ X │ │ X │ X X │ X │ X │
3767
+ 9│ ▒▒▒│▒▒▒│ │▒▒▒│ ▒▒▒ │▒▒▒│▒▒▒ │▒▒▒
3513
3768
  ├───┐ ├───┘ ├───┘ ├───────┐ ┌───┤ │ ┌───────┤ └───────────┬───────┤
3514
- 10│ X │ │ │ X X │ X │ │ │ X X X │ X │
3769
+ 10│▒▒▒│ │ │ │▒▒▒ ▒▒▒│ │▒▒▒││▒▒▒ ▒▒▒│ ▒▒▒│▒▒▒
3515
3770
  │ └───┤ ┌───┴───┐ └───┬───┴───┘ ├───┴───┴───────┴───┐ ┌───────┴───┐ │
3516
- 11│ X │ X X │ X │ X │ X │
3771
+ 11│▒▒▒ │▒▒▒ ▒▒▒│ ▒▒▒│ ▒▒▒│ │▒▒▒ │ │
3517
3772
  ├───────┤ └───┬───┘ └───┬───────┴───┬───┐ ┌───┤ ├───────┐ │ │
3518
- 12│ X X │ X │ X │ X │ │ X │ │ X │ X │ X │
3773
+ 12│ ▒▒▒│▒▒▒ ▒▒▒│▒▒▒ │▒▒▒│ │▒▒▒│ │▒▒▒ │▒▒▒│▒▒▒│
3519
3774
  │ ┌───┘ ┌───┴───┐ ├───┐ │ ├───┐ │ │ └───┐ │ │ │
3520
- 13│ X │ X X X │ │ X │ X │ │ X │ │ X │ X │ │ │
3775
+ 13│▒▒▒│ │▒▒▒ ▒▒▒│ ▒▒▒ │▒▒▒ │▒▒▒│ │▒▒▒│ │▒▒▒ │▒▒▒│ │ │
3521
3776
  ├───┘ ├───┬───┴───────────┘ └───┬───┴───┘ └───┘ ├───────┴───┼───┴───┤
3522
- 14│ X │X X │ X │ X X
3777
+ 14│▒▒▒ │ │ ▒▒▒ ▒▒▒│ ▒▒▒ │▒▒▒ ▒▒▒│
3523
3778
  ├───┐ │ └───┬───────────┬───┐ └───┬───────────────┴───┬───────┘ │
3524
- 15│ │ X X │ X │ X │ │ X X │ X X │
3779
+ 15│ │ │▒▒▒ ▒▒▒│ ▒▒▒│▒▒▒│ │▒▒▒ ▒▒▒ │▒▒▒ ▒▒▒│
3525
3780
  │ ├───┬───┴───┬───┘ ┌───────┤ └───────┼───┐ ┌───┬───┴───────────────┤
3526
- 16│ │ X │ X X │ X │ X │ │ X │ X X │
3781
+ 16│ │▒▒▒│ ▒▒▒│▒▒▒ ▒▒▒ │▒▒▒│ │▒▒▒│ ▒▒▒ ▒▒▒│
3527
3782
  │ │ │ └───────┤ ┌───┴───────────┤ └───┬───┤ │ ┌───┬───────┐ │
3528
- 17│ X X X │ │ X X │ X │ X ││ │ X X
3783
+ 17│ │▒▒▒│ ▒▒▒ ▒▒▒ │▒▒▒ ▒▒▒ ▒▒▒│▒▒▒│ │ │ │▒▒▒ ▒▒▒│
3529
3784
  │ └───┴───┐ ┌───────┘ └───┬───┬───────┴───┐ │ │ └───┤ │ └───┤
3530
- 18│ X X │ X │ X X │ X │ X │
3785
+ 18│▒▒▒ ▒▒▒│ ▒▒▒│ ▒▒▒ ▒▒▒││▒▒▒ │▒▒▒│
3531
3786
  ├───────────┴───┴───┬───────┬───┘ └───────┬───┘ │ └───────┤ │ ┌───────┤
3532
- 19 X X │ X X X X │ X │ X │ X X │
3787
+ 19│▒▒▒ ▒▒▒ │▒▒▒ ▒▒▒│ ▒▒▒ ▒▒▒ │ │ ▒▒▒ │▒▒▒│ │▒▒▒ ▒▒▒│
3533
3788
  └───────────────────┴───────┴───────────────┴───────┴───────────┴───┴───┴───────┘
3534
3789
  Solutions found: 1
3535
3790
  status: OPTIMAL
3536
- Time taken: 0.04 seconds
3791
+ Time taken: 0.03 seconds
3537
3792
  ```
3538
3793
 
3539
3794
  **Solved puzzle**
@@ -3714,31 +3969,52 @@ solutions = binst.solve_and_print()
3714
3969
 
3715
3970
  ```python
3716
3971
  Solution found
3717
- [
3718
- [ 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W' ],
3719
- [ 'W', 'B', 'B', 'W', 'B', 'W', 'B', 'B', 'B', 'B', 'B', 'B', 'W', 'B', 'W', 'B', 'B', 'W', 'B', 'W' ],
3720
- [ 'W', 'W', 'B', 'W', 'B', 'W', 'W', 'W', 'W', 'W', 'B', 'W', 'W', 'B', 'W', 'W', 'B', 'W', 'B', 'W' ],
3721
- [ 'W', 'B', 'B', 'B', 'B', 'W', 'B', 'W', 'B', 'B', 'B', 'B', 'B', 'B', 'W', 'B', 'B', 'W', 'B', 'W' ],
3722
- [ 'W', 'W', 'W', 'B', 'W', 'W', 'B', 'W', 'W', 'W', 'W', 'W', 'B', 'W', 'W', 'W', 'B', 'W', 'B', 'W' ],
3723
- [ 'W', 'B', 'W', 'B', 'W', 'B', 'B', 'B', 'W', 'B', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W' ],
3724
- [ 'W', 'B', 'B', 'B', 'W', 'W', 'W', 'B', 'W', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W' ],
3725
- [ 'W', 'W', 'B', 'W', 'W', 'B', 'W', 'B', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W' ],
3726
- [ 'W', 'B', 'B', 'B', 'B', 'B', 'W', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W' ],
3727
- [ 'W', 'W', 'W', 'W', 'W', 'B', 'W', 'B', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W' ],
3728
- [ 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'W', 'B', 'B', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W' ],
3729
- [ 'W', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'B', 'B', 'W' ],
3730
- [ 'W', 'W', 'W', 'W', 'W', 'B', 'W', 'W', 'W', 'W', 'B', 'W', 'B', 'W', 'B', 'W', 'W', 'W', 'B', 'W' ],
3731
- [ 'W', 'B', 'B', 'B', 'B', 'B', 'W', 'B', 'B', 'B', 'B', 'B', 'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W' ],
3732
- [ 'W', 'W', 'W', 'B', 'W', 'B', 'W', 'W', 'W', 'W', 'W', 'W', 'B', 'B', 'B', 'W', 'B', 'W', 'B', 'W' ],
3733
- [ 'W', 'B', 'B', 'B', 'W', 'B', 'W', 'B', 'B', 'B', 'B', 'B', 'B', 'W', 'B', 'B', 'B', 'W', 'B', 'W' ],
3734
- [ 'W', 'W', 'B', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'B', 'W', 'B', 'W' ],
3735
- [ 'W', 'B', 'B', 'W', 'B', 'B', 'B', 'B', 'W', 'B', 'B', 'B', 'B', 'B', 'B', 'W', 'B', 'W', 'B', 'W' ],
3736
- [ 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'B', 'W', 'W', 'W', 'W', 'W', 'W', 'B', 'W', 'B', 'W', 'B', 'W' ],
3737
- [ 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'W' ],
3738
- ]
3972
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
3973
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
3974
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
3975
+ 0│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
3976
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3977
+ 1│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │
3978
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3979
+ 2│ │ │▒▒▒│ │▒▒▒│ │ │ │ │ │▒▒▒│ │ │▒▒▒│ │ │▒▒▒│ │▒▒▒│ │
3980
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3981
+ 3│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │
3982
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3983
+ 4│ │ │ │▒▒▒│ │ │▒▒▒│ │ │ │ │ │▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ │
3984
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3985
+ 5│ │▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
3986
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3987
+ 6│ │▒▒▒│▒▒▒│▒▒▒│ │ │ │▒▒▒│ │ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
3988
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3989
+ 7│ │ │▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
3990
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3991
+ 8│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
3992
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3993
+ 9│ │ │ │ │ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
3994
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3995
+ 10│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
3996
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3997
+ 11│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │
3998
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3999
+ 12│ │ │ │ │ │▒▒▒│ │ │ │ │▒▒▒│ │▒▒▒│ │▒▒▒│ │ │ │▒▒▒│ │
4000
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4001
+ 13│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
4002
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4003
+ 14│ │ │ │▒▒▒│ │▒▒▒│ │ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │
4004
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4005
+ 15│ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │
4006
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4007
+ 16│ │ │▒▒▒│ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒│ │▒▒▒│ │
4008
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4009
+ 17│ │▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │
4010
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4011
+ 18│ │ │ │ │ │ │ │▒▒▒│ │ │ │ │ │ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
4012
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4013
+ 19│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │
4014
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
3739
4015
  Solutions found: 1
3740
4016
  status: OPTIMAL
3741
- Time taken: 3.10 seconds
4017
+ Time taken: 3.09 seconds
3742
4018
  ```
3743
4019
 
3744
4020
  **Solved puzzle**
@@ -5031,15 +5307,27 @@ solutions = binst.solve_and_print()
5031
5307
 
5032
5308
  ```python
5033
5309
  Solution found
5034
- [['1' '9' '4' '2' '3' '6' '8' '5' '7']
5035
- ['2' '8' '5' '9' '4' '7' '1' '6' '3']
5036
- ['6' '3' '8' '4' '7' '5' '9' '1' '2']
5037
- ['7' '6' '3' '5' '9' '1' '2' '8' '4']
5038
- ['4' '5' '2' '1' '6' '3' '7' '9' '8']
5039
- ['5' '7' '9' '8' '1' '4' '3' '2' '6']
5040
- ['3' '1' '7' '6' '8' '2' '5' '4' '9']
5041
- ['9' '4' '1' '7' '2' '8' '6' '3' '5']
5042
- ['8' '2' '6' '3' '5' '9' '4' '7' '1']]
5310
+
5311
+ 0 1 2 3 4 5 6 7 8
5312
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
5313
+ 0│ 1 9 4 │ 2 │ 3 │ 6 │ 8 │ 5 │ 7 │
5314
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5315
+ 1│ 2 │ 8 │ 5 9 4 │ 7 │ 1 6 │ 3
5316
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5317
+ 2│ 6 │ 3 │ 8 │ 4 7 5 9 │ 1 │ 2 │
5318
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5319
+ 3│ 7 │ 6 │ 3 │ 5 │ 9 │ 1 │ 2 │ 8 │ 4 │
5320
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5321
+ 4│ 4 │ 5 │ 2 │ 1 │ 6 │ 3 │ 7 │ 9 │ 8 │
5322
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5323
+ 5│ 5 │ 7 │ 9 │ 8 │ 1 │ 4 │ 3 │ 2 │ 6 │
5324
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5325
+ 6│ 3 │ 1 │ 7 │ 6 │ 8 │ 2 │ 5 │ 4 │ 9 │
5326
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5327
+ 7│ 9 │ 4 │ 1 │ 7 │ 2 │ 8 │ 6 │ 3 │ 5 │
5328
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5329
+ 8│ 8 │ 2 │ 6 │ 3 │ 5 │ 9 │ 4 │ 7 │ 1 │
5330
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┘
5043
5331
  Solutions found: 1
5044
5332
  status: OPTIMAL
5045
5333
  Time taken: 0.01 seconds
@@ -5103,18 +5391,30 @@ solutions = binst.solve_and_print()
5103
5391
 
5104
5392
  ```python
5105
5393
  Solution found
5106
- [['5' '4' '8' '7' '9' '1' '6' '2' '3']
5107
- ['3' '7' '1' '6' '2' '8' '4' '9' '5']
5108
- ['2' '6' '9' '5' '4' '3' '1' '7' '8']
5109
- ['1' '9' '4' '3' '6' '2' '5' '8' '7']
5110
- ['8' '3' '7' '1' '5' '9' '2' '4' '6']
5111
- ['6' '2' '5' '8' '7' '4' '3' '1' '9']
5112
- ['4' '8' '2' '9' '3' '5' '7' '6' '1']
5113
- ['7' '1' '3' '2' '8' '6' '9' '5' '4']
5114
- ['9' '5' '6' '4' '1' '7' '8' '3' '2']]
5394
+
5395
+ 0 1 2 3 4 5 6 7 8
5396
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
5397
+ 0│ 5 4 8 │ 7 │ 9 │ 1 │ 6 2 3
5398
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5399
+ 1│ 3 │ 7 │ 1 │ 6 2 8 4 9 │ 5 │
5400
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5401
+ 2│ 2 6 9 5 4 │ 3 │ 1 │ 7 │ 8 │
5402
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5403
+ 3│ 1 │ 9 │ 4 │ 3 │ 6 │ 2 │ 5 │ 8 │ 7 │
5404
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5405
+ 4│ 8 │ 3 │ 7 │ 1 │ 5 │ 9 │ 2 │ 4 │ 6 │
5406
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5407
+ 5│ 6 │ 2 │ 5 │ 8 │ 7 │ 4 │ 3 │ 1 │ 9 │
5408
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5409
+ 6│ 4 │ 8 │ 2 │ 9 │ 3 │ 5 │ 7 │ 6 │ 1 │
5410
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5411
+ 7│ 7 │ 1 │ 3 │ 2 │ 8 │ 6 │ 9 │ 5 │ 4 │
5412
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5413
+ 8│ 9 │ 5 │ 6 │ 4 │ 1 │ 7 │ 8 │ 3 │ 2 │
5414
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┘
5115
5415
  Solutions found: 1
5116
5416
  status: OPTIMAL
5117
- Time taken: 0.01 seconds
5417
+ Time taken: 0.02 seconds
5118
5418
  ```
5119
5419
 
5120
5420
  **Solved puzzle**
@@ -5254,16 +5554,29 @@ solutions = binst.solve_and_print()
5254
5554
 
5255
5555
  ```python
5256
5556
  Solution found
5257
- [['R' 'DLR' 'DLR' 'DLR' 'L' 'R' 'DL' 'DR' 'LR' 'L']
5258
- ['D' 'U' 'U' 'UDR' 'LR' 'L' 'UD' 'UDR' 'LR' 'L']
5259
- ['UD' 'D' 'R' 'ULR' 'DL' 'R' 'UDL' 'UD' 'D' 'D']
5260
- ['UD' 'UD' 'R' 'DLR' 'ULR' 'DLR' 'UL' 'UDR' 'ULR' 'UL']
5261
- ['UDR' 'ULR' 'LR' 'ULR' 'L' 'UDR' 'LR' 'UL' 'R' 'DL']
5262
- ['U' 'R' 'DLR' 'LR' 'DLR' 'UL' 'D' 'D' 'DR' 'UL']
5263
- ['D' 'R' 'UDL' 'D' 'U' 'D' 'UDR' 'ULR' 'ULR' 'DL']
5264
- ['UDR' 'LR' 'ULR' 'UDL' 'DR' 'ULR' 'ULR' 'LR' 'DL' 'U']
5265
- ['U' 'R' 'DLR' 'ULR' 'ULR' 'DLR' 'L' 'DR' 'ULR' 'DL']
5266
- ['R' 'LR' 'ULR' 'LR' 'L' 'U' 'R' 'ULR' 'L' 'U']]
5557
+ 0 0 0 0 0 0 0 0 0 0
5558
+ 0 1 2 3 4 5 6 7 8 9
5559
+
5560
+ 0 O───┬───┬───┬───O O───┐ ┌───────O
5561
+ │ │ │ │ │
5562
+ 1 O O O ├───────O │ ├───────O
5563
+ │ │ │ │
5564
+ 2 │ O O───┴───┐ O───┤ │ O O
5565
+ │ │ │ │ │ │ │
5566
+ 3 │ │ O───┬───┴───┬───┘ ├───┴───┘
5567
+ │ │ │ │ │
5568
+ 4 ├───┴───────┴───O ├───────┘ O───┐
5569
+ │ │ │
5570
+ 5 O O───┬───────┬───┘ O O ┌───┘
5571
+ │ │ │ │ │
5572
+ 6 O O───┤ O O O ├───┴───┴───┐
5573
+ │ │ │ │ │ │
5574
+ 7 ├───────┴───┤ ┌───┴───┴───────┐ O
5575
+ │ │ │ │
5576
+ 8 O O───┬───┴───┴───┬───O ┌───┴───┐
5577
+ │ │ │ │
5578
+ 9 O───────┴───────O O O───┴───O O
5579
+
5267
5580
  Solutions found: 1
5268
5581
  status: OPTIMAL
5269
5582
  Time taken: 5.65 seconds
@@ -5345,6 +5658,136 @@ Time taken: 2.91 seconds
5345
5658
 
5346
5659
  ---
5347
5660
 
5661
+ ## Nonograms Colored (Puzzle Type #57)
5662
+
5663
+ * [**Play online**](https://www.nonograms.org/nonograms2)
5664
+
5665
+ * [**Solver Code**][57]
5666
+
5667
+ <details>
5668
+ <summary><strong>Rules</strong></summary>
5669
+
5670
+ You have a grid of squares, which must all be filled in either white or one of the specified colors. Beside each row of the grid are listed, in order, the lengths of the runs of the specified colors on that row; above each column are listed, in order, the lengths of the runs of the specified colors in that column. Your aim is to fill in the entire grid white or one of the specified colors.
5671
+
5672
+ </details>
5673
+
5674
+ **Unsolved puzzle**
5675
+
5676
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/nonograms_colored_unsolved.png" alt="Nonograms Colored unsolved" width="500">
5677
+
5678
+ Code to utilize this package and solve the puzzle:
5679
+
5680
+ ```python
5681
+ import numpy as np
5682
+ from puzzle_solver.puzzles.nonograms import nonograms_colored as solver
5683
+ top = [
5684
+ ['5M'], ['8M'], ['1M', '3R', '6M'], ['1M', '5R', '5M'], ['8R', '4M'],
5685
+ ['10R', '4M'], ['10R', '4M'], ['1G', '2M', '2R', '3P', '7R', '3M'], ['1L', '2G', '1G', '2F', '3M', '1R', '5P', '6R', '3M'], ['2L', '2G', '2F', '4M', '1R', '6P', '5R', '3M'],
5686
+ ['3L', '1F', '1R', '2M', '8P', '5R', '3M'], ['1G', '1L', '1F', '1R', '2M', '8P', '5R', '3M'], ['1G', '2L', '2R', '1M', '8P', '5R', '3M'], ['1L', '1G', '3R', '1M', '8P', '5R', '3M'], ['1L', '3R', '2M', '7P', '6R', '3M'],
5687
+ ['1L', '3R', '1M', '8P', '5R', '4M'], ['1L', '3R', '1M', '8P', '5R', '4M'], ['2R', '1M', '9P', '5R', '3M'], ['1R', '9P', '5R', '3M'], ['10P', '5R', '3M'],
5688
+ ['1G', '1R', '9P', '5R', '4M'], ['1L', '1G', '1F', '2R', '8P', '5R', '6M'], ['1L', '2F', '3R', '6P', '5R', '7M'], ['1L', '1G', '1F', '4R', '5P', '5R', '3M', '3P', '2M'], ['1L', '1F', '6R', '2P', '6R', '3M', '4P', '2M'],
5689
+ ['1L', '1F', '12R', '4M', '6P', '1M'], ['1L', '1F', '1R', '3L', '1M', '3R', '7M', '7P', '1M'], ['1G', '3L', '1G', '11M', '7P', '1R', '1M'], ['1L', '1L', '3G', '11M', '1R', '6P', '2R'], ['1G', '3L', '1G', '4F', '6M', '9R'],
5690
+ ['3G', '2F', '2L', '1F', '4M', '7R'], ['4G', '1F', '4L'], ['1L', '1G', '1F', '1L', '2L'], ['2F', '1L']
5691
+ ]
5692
+ side = [
5693
+ ['1L', '1G'], ['1L', '1G'], ['1L', '2G'], ['6L', '1G', '2L', '2G'], ['2L', '1G', '3F', '1L', '2G', '1F', '1G'],
5694
+ ['1G', '1L', '1G', '2F', '3R', '1L', '1G', '2F', '1G', '1L'], ['2G', '1L', '1G', '2F', '3R', '2L', '1G', '1F', '1L', '1F', '1G'], ['1G', '1L', '2G', '4L', '5R', '1L', '1G', '1M', '1F', '2L', '1F'], ['1G', '1F', '3L', '1G', '4R', '6R', '1L', '2M', '2F', '2L', '1F'], ['4F', '1L', '6R', '3P', '4R', '5M', '1L', '1F'],
5695
+ ['1G', '1F', '1M', '7R', '1M', '6P', '3R', '4M', '2L'], ['5M', '2R', '3M', '8P', '2R', '4M', '2L'], ['8M', '10P', '2R', '4M'], ['2M', '14P', '2R', '4M'], ['3R', '14P', '2R', '4M'],
5696
+ ['3R', '15P', '3R', '3M'], ['3R', '15P', '4R', '3M'], ['1M', '3R', '14P', '4R', '4M'], ['1M', '4R', '13P', '5R', '3M', '2R'], ['1M', '6R', '10P', '6R', '3M', '2P', '2R'],
5697
+ ['1M', '7R', '5P', '9R', '3M', '3P', '2R'], ['2M', '20R', '3M', '4P', '2R'], ['3M', '18R', '3M', '5P', '2R'], ['4M', '16R', '3M', '6P', '2R'], ['5M', '13R', '5M', '6P', '2R'],
5698
+ ['7M', '8R', '8M', '5P', '3R'], ['24M', '2P', '3R'], ['16M', '7M'], ['12M']
5699
+ ]
5700
+ binst = solver.Board(top=top, side=side)
5701
+ solutions = binst.solve_and_print(visualize_colors={
5702
+ 'M': 'darkmagenta',
5703
+ 'R': 'magenta',
5704
+ 'G': 'green',
5705
+ 'P': 'pink',
5706
+ 'L': 'lime',
5707
+ 'F': 'forestgreen',
5708
+ })
5709
+ ```
5710
+
5711
+ **Script Output**
5712
+
5713
+ ```python
5714
+ Solution found
5715
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3
5716
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
5717
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
5718
+ 0│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ L │ G │ │ │ │ │
5719
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5720
+ 1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ L │ G │ │ │ │
5721
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5722
+ 2│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ L │ G │ G │ │ │
5723
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5724
+ 3│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ L │ L │ L │ L │ L │ L │ G │ L │ L │ G │ G │ │ │
5725
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5726
+ 4│ │ │ │ │ │ │ │ │ L │ L │ │ │ │ │ │ │ │ │ │ │ │ │ │ G │ F │ F │ F │ L │ G │ G │ F │ G │ │ │
5727
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5728
+ 5│ │ │ │ │ │ │ │ │ G │ L │ │ │ │ │ │ │ │ │ │ │ │ G │ F │ F │ R │ R │ R │ L │ G │ F │ F │ G │ L │ │
5729
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5730
+ 6│ │ │ │ │ │ │ │ │ G │ G │ L │ │ │ │ │ │ │ │ │ │ G │ F │ F │ R │ R │ R │ L │ L │ G │ F │ L │ F │ G │ │
5731
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5732
+ 7│ │ │ │ │ │ │ │ │ │ G │ L │ G │ G │ L │ L │ L │ L │ │ │ │ │ R │ R │ R │ R │ R │ L │ G │ M │ F │ L │ L │ F │ │
5733
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5734
+ 8│ │ │ │ │ │ │ │ │ G │ F │ L │ L │ L │ G │ R │ R │ R │ R │ │ │ R │ R │ R │ R │ R │ R │ L │ M │ M │ F │ F │ L │ L │ F │
5735
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5736
+ 9│ │ │ │ │ │ │ │ │ F │ F │ F │ F │ L │ R │ R │ R │ R │ R │ R │ P │ P │ P │ R │ R │ R │ R │ M │ M │ M │ M │ M │ L │ │ F │
5737
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5738
+ 10│ │ │ │ │ │ │ │ G │ F │ M │ R │ R │ R │ R │ R │ R │ R │ M │ P │ P │ P │ P │ P │ P │ R │ R │ R │ M │ M │ M │ M │ L │ L │ │
5739
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5740
+ 11│ │ │ │ │ │ │ │ M │ M │ M │ M │ M │ R │ R │ M │ M │ M │ P │ P │ P │ P │ P │ P │ P │ P │ R │ R │ M │ M │ M │ M │ │ L │ L │
5741
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5742
+ 12│ │ │ │ │ │ │ │ M │ M │ M │ M │ M │ M │ M │ M │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ R │ R │ M │ M │ M │ M │ │ │ │
5743
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5744
+ 13│ │ │ │ │ │ │ │ │ M │ M │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ R │ R │ M │ M │ M │ M │ │ │ │ │
5745
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5746
+ 14│ │ │ │ │ │ │ │ R │ R │ R │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ R │ R │ M │ M │ M │ M │ │ │ │ │
5747
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5748
+ 15│ │ │ │ │ │ R │ R │ R │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ R │ R │ R │ M │ M │ M │ │ │ │ │ │
5749
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5750
+ 16│ │ │ │ │ R │ R │ R │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ R │ R │ R │ R │ M │ M │ M │ │ │ │ │ │
5751
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5752
+ 17│ │ │ │ M │ R │ R │ R │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ R │ R │ R │ R │ M │ M │ M │ M │ │ │ │ │ │
5753
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5754
+ 18│ │ │ M │ R │ R │ R │ R │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ R │ R │ R │ R │ R │ M │ M │ M │ R │ R │ │ │ │ │
5755
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5756
+ 19│ │ M │ R │ R │ R │ R │ R │ R │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ R │ R │ R │ R │ R │ R │ M │ M │ M │ P │ P │ R │ R │ │ │ │
5757
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5758
+ 20│ │ M │ R │ R │ R │ R │ R │ R │ R │ P │ P │ P │ P │ P │ R │ R │ R │ R │ R │ R │ R │ R │ R │ M │ M │ M │ P │ P │ P │ R │ R │ │ │ │
5759
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5760
+ 21│ M │ M │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ M │ M │ M │ P │ P │ P │ P │ R │ R │ │ │ │
5761
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5762
+ 22│ M │ M │ M │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ M │ M │ M │ P │ P │ P │ P │ P │ R │ R │ │ │ │
5763
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5764
+ 23│ M │ M │ M │ M │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ M │ M │ M │ P │ P │ P │ P │ P │ P │ R │ R │ │ │ │
5765
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5766
+ 24│ M │ M │ M │ M │ M │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ M │ M │ M │ M │ M │ P │ P │ P │ P │ P │ P │ R │ R │ │ │ │
5767
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5768
+ 25│ M │ M │ M │ M │ M │ M │ M │ R │ R │ R │ R │ R │ R │ R │ R │ M │ M │ M │ M │ M │ M │ M │ M │ P │ P │ P │ P │ P │ R │ R │ R │ │ │ │
5769
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5770
+ 26│ │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ P │ P │ R │ R │ R │ │ │ │ │
5771
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5772
+ 27│ │ │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ │ │ │ M │ M │ M │ M │ M │ M │ M │ │ │ │ │ │ │
5773
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5774
+ 28│ │ │ │ │ │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
5775
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
5776
+ Solutions found: 1
5777
+ status: OPTIMAL
5778
+ Time taken: 0.40 seconds
5779
+ ```
5780
+
5781
+ The script also visualizes the solution:
5782
+
5783
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/nonograms_colored_script_output.png" alt="Nonograms Colored solved" width="500">
5784
+
5785
+ **Solved puzzle**
5786
+
5787
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/nonograms_colored_solved.png" alt="Nonograms Colored solved" width="500">
5788
+
5789
+ ---
5790
+
5348
5791
  ---
5349
5792
 
5350
5793
  ## Why SAT / CP-SAT?
@@ -5452,3 +5895,4 @@ Issues and PRs welcome!
5452
5895
  [54]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/flood_it "puzzle_solver/src/puzzle_solver/puzzles/flood_it at master · Ar-Kareem/puzzle_solver · GitHub"
5453
5896
  [55]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/pipes "puzzle_solver/src/puzzle_solver/puzzles/pipes at master · Ar-Kareem/puzzle_solver · GitHub"
5454
5897
  [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"
5898
+ [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"