multi-puzzle-solver 1.0.4__py3-none-any.whl → 1.0.7__py3-none-any.whl

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 (42) hide show
  1. {multi_puzzle_solver-1.0.4.dist-info → multi_puzzle_solver-1.0.7.dist-info}/METADATA +1075 -556
  2. multi_puzzle_solver-1.0.7.dist-info/RECORD +74 -0
  3. puzzle_solver/__init__.py +5 -1
  4. puzzle_solver/core/utils.py +17 -1
  5. puzzle_solver/core/utils_visualizer.py +257 -201
  6. puzzle_solver/puzzles/abc_view/abc_view.py +75 -0
  7. puzzle_solver/puzzles/aquarium/aquarium.py +8 -23
  8. puzzle_solver/puzzles/battleships/battleships.py +39 -53
  9. puzzle_solver/puzzles/binairo/binairo.py +2 -2
  10. puzzle_solver/puzzles/black_box/black_box.py +6 -70
  11. puzzle_solver/puzzles/connect_the_dots/connect_the_dots.py +4 -2
  12. puzzle_solver/puzzles/filling/filling.py +11 -34
  13. puzzle_solver/puzzles/galaxies/galaxies.py +4 -2
  14. puzzle_solver/puzzles/heyawake/heyawake.py +72 -14
  15. puzzle_solver/puzzles/kakurasu/kakurasu.py +5 -13
  16. puzzle_solver/puzzles/kakuro/kakuro.py +6 -2
  17. puzzle_solver/puzzles/lits/lits.py +4 -2
  18. puzzle_solver/puzzles/mosaic/mosaic.py +8 -18
  19. puzzle_solver/puzzles/nonograms/nonograms.py +80 -85
  20. puzzle_solver/puzzles/nonograms/nonograms_colored.py +221 -0
  21. puzzle_solver/puzzles/norinori/norinori.py +5 -12
  22. puzzle_solver/puzzles/nurikabe/nurikabe.py +6 -2
  23. puzzle_solver/puzzles/palisade/palisade.py +8 -22
  24. puzzle_solver/puzzles/pearl/pearl.py +15 -27
  25. puzzle_solver/puzzles/pipes/pipes.py +2 -1
  26. puzzle_solver/puzzles/range/range.py +19 -55
  27. puzzle_solver/puzzles/rectangles/rectangles.py +4 -2
  28. puzzle_solver/puzzles/shingoki/shingoki.py +62 -105
  29. puzzle_solver/puzzles/singles/singles.py +6 -2
  30. puzzle_solver/puzzles/slant/slant.py +13 -19
  31. puzzle_solver/puzzles/slitherlink/slitherlink.py +2 -2
  32. puzzle_solver/puzzles/star_battle/star_battle.py +5 -2
  33. puzzle_solver/puzzles/stitches/stitches.py +8 -21
  34. puzzle_solver/puzzles/sudoku/sudoku.py +5 -11
  35. puzzle_solver/puzzles/tapa/tapa.py +6 -2
  36. puzzle_solver/puzzles/tents/tents.py +50 -80
  37. puzzle_solver/puzzles/tracks/tracks.py +19 -66
  38. puzzle_solver/puzzles/unruly/unruly.py +17 -49
  39. puzzle_solver/puzzles/yin_yang/yin_yang.py +3 -10
  40. multi_puzzle_solver-1.0.4.dist-info/RECORD +0 -72
  41. {multi_puzzle_solver-1.0.4.dist-info → multi_puzzle_solver-1.0.7.dist-info}/WHEEL +0 -0
  42. {multi_puzzle_solver-1.0.4.dist-info → multi_puzzle_solver-1.0.7.dist-info}/top_level.txt +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.7
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
@@ -102,304 +102,314 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
102
102
  <tr>
103
103
  <td align="center">
104
104
  <a href="#nonograms-puzzle-type-1"><b>Nonograms</b><br><br>
105
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/nonogram_solved.png" alt="Nonograms" width="140">
105
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/nonogram_solved.png" alt="Nonograms" width="140">
106
106
  </a>
107
107
  </td>
108
108
  <td align="center">
109
109
  <a href="#sudoku-puzzle-type-2"><b>Sudoku</b><br><br>
110
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/sudoku_solved.png" alt="Sudoku" width="140">
110
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/sudoku_solved.png" alt="Sudoku" width="140">
111
111
  </a>
112
112
  </td>
113
113
  <td align="center">
114
114
  <a href="#minesweeper-puzzle-type-3"><b>Minesweeper</b><br><br>
115
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/minesweeper_pre.png" alt="Minesweeper" width="140">
115
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/minesweeper_pre.png" alt="Minesweeper" width="140">
116
116
  </a>
117
117
  </td>
118
118
  <td align="center">
119
119
  <a href="#dominosa-puzzle-type-4"><b>Dominosa</b><br><br>
120
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/dominosa_solved.png" alt="Dominosa" width="140">
120
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/dominosa_solved.png" alt="Dominosa" width="140">
121
121
  </a>
122
122
  </td>
123
123
  <td align="center">
124
124
  <a href="#light-up-puzzle-type-5"><b>Light Up</b><br><br>
125
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/lightup_solved.png" alt="Light Up" width="140">
125
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/lightup_solved.png" alt="Light Up" width="140">
126
126
  </a>
127
127
  </td>
128
128
  </tr>
129
129
  <tr>
130
130
  <td align="center">
131
131
  <a href="#tents-puzzle-type-6"><b>Tents</b><br><br>
132
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/tents_solved.png" alt="Tents" width="140">
132
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/tents_solved.png" alt="Tents" width="140">
133
133
  </a>
134
134
  </td>
135
135
  <td align="center">
136
136
  <a href="#filling-puzzle-type-7"><b>Filling</b><br><br>
137
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/filling_solved.png" alt="Filling" width="140">
137
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/filling_solved.png" alt="Filling" width="140">
138
138
  </a>
139
139
  </td>
140
140
  <td align="center">
141
141
  <a href="#keen-puzzle-type-8"><b>Keen</b><br><br>
142
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/keen_solved.png" alt="Keen" width="140">
142
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/keen_solved.png" alt="Keen" width="140">
143
143
  </a>
144
144
  </td>
145
145
  <td align="center">
146
146
  <a href="#towers-puzzle-type-9"><b>Towers</b><br><br>
147
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/towers_solved.png" alt="Towers" width="140">
147
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/towers_solved.png" alt="Towers" width="140">
148
148
  </a>
149
149
  </td>
150
150
  <td align="center">
151
151
  <a href="#singles-puzzle-type-10"><b>Singles</b><br><br>
152
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/singles_solved.png" alt="Singles" width="140">
152
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/singles_solved.png" alt="Singles" width="140">
153
153
  </a>
154
154
  </td>
155
155
  </tr>
156
156
  <tr>
157
157
  <td align="center">
158
158
  <a href="#magnets-puzzle-type-11"><b>Magnets</b><br><br>
159
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/magnets_solved.png" alt="Magnets" width="140">
159
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/magnets_solved.png" alt="Magnets" width="140">
160
160
  </a>
161
161
  </td>
162
162
  <td align="center">
163
163
  <a href="#signpost-puzzle-type-12"><b>Signpost</b><br><br>
164
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/signpost_solved.png" alt="Signpost" width="140">
164
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/signpost_solved.png" alt="Signpost" width="140">
165
165
  </a>
166
166
  </td>
167
167
  <td align="center">
168
168
  <a href="#range-puzzle-type-13"><b>Range</b><br><br>
169
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/range_solved.png" alt="Range" width="140">
169
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/range_solved.png" alt="Range" width="140">
170
170
  </a>
171
171
  </td>
172
172
  <td align="center">
173
173
  <a href="#undead-puzzle-type-14"><b>Undead</b><br><br>
174
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/undead_solved.png" alt="Undead" width="140">
174
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/undead_solved.png" alt="Undead" width="140">
175
175
  </a>
176
176
  </td>
177
177
  <td align="center">
178
178
  <a href="#unruly-puzzle-type-15"><b>Unruly</b><br><br>
179
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/unruly_solved.png" alt="Unruly" width="140">
179
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/unruly_solved.png" alt="Unruly" width="140">
180
180
  </a>
181
181
  </td>
182
182
  </tr>
183
183
  <tr>
184
184
  <td align="center">
185
185
  <a href="#tracks-puzzle-type-16"><b>Tracks</b><br><br>
186
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/tracks_solved.png" alt="Tracks" width="140">
186
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/tracks_solved.png" alt="Tracks" width="140">
187
187
  </a>
188
188
  </td>
189
189
  <td align="center">
190
190
  <a href="#mosaic-puzzle-type-17"><b>Mosaic</b><br><br>
191
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/mosaic_solved.png" alt="Mosaic" width="140">
191
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mosaic_solved.png" alt="Mosaic" width="140">
192
192
  </a>
193
193
  </td>
194
194
  <td align="center">
195
195
  <a href="#map-puzzle-type-18"><b>Map</b><br><br>
196
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/map_solved.png" alt="Map" width="140">
196
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/map_solved.png" alt="Map" width="140">
197
197
  </a>
198
198
  </td>
199
199
  <td align="center">
200
200
  <a href="#pearl-puzzle-type-19"><b>Pearl</b><br><br>
201
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/pearl_solved.png" alt="Pearl" width="140">
201
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/pearl_solved.png" alt="Pearl" width="140">
202
202
  </a>
203
203
  </td>
204
204
  <td align="center">
205
205
  <a href="#bridges-puzzle-type-20"><b>Bridges</b><br><br>
206
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/bridges_solved.png" alt="Bridges" width="140">
206
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/bridges_solved.png" alt="Bridges" width="140">
207
207
  </a>
208
208
  </td>
209
209
  </tr>
210
210
  <tr>
211
211
  <td align="center">
212
212
  <a href="#inertia-puzzle-type-21"><b>Inertia</b><br><br>
213
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/inertia_unsolved.png" alt="Inertia" width="140">
213
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/inertia_unsolved.png" alt="Inertia" width="140">
214
214
  </a>
215
215
  </td>
216
216
  <td align="center">
217
217
  <a href="#guess-puzzle-type-22"><b>Guess</b><br><br>
218
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/guess_3.png" alt="Guess" width="140">
218
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/guess_3.png" alt="Guess" width="140">
219
219
  </a>
220
220
  </td>
221
221
  <td align="center">
222
222
  <a href="#chess-range-puzzle-type-23"><b>Chess Range</b><br><br>
223
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_unsolved.png" alt="Chess range" width="140">
223
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/chess_range_unsolved.png" alt="Chess range" width="140">
224
224
  </a>
225
225
  </td>
226
226
  <td align="center">
227
227
  <a href="#chess-solo-puzzle-type-24"><b>Chess Solo</b><br><br>
228
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_solo_unsolved.png" alt="Chess solo" width="140">
228
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/chess_solo_unsolved.png" alt="Chess solo" width="140">
229
229
  </a>
230
230
  </td>
231
231
  <td align="center">
232
232
  <a href="#chess-melee-puzzle-type-25"><b>Chess Melee</b><br><br>
233
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_melee_unsolved.png" alt="Chess melee" width="140">
233
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/chess_melee_unsolved.png" alt="Chess melee" width="140">
234
234
  </a>
235
235
  </td>
236
236
  </tr>
237
237
  <tr>
238
238
  <td align="center">
239
239
  <a href="#thermometers-puzzle-type-26"><b>Thermometers</b><br><br>
240
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/thermometers_solved.png" alt="Thermometers" width="140">
240
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/thermometers_solved.png" alt="Thermometers" width="140">
241
241
  </a>
242
242
  </td>
243
243
  <td align="center">
244
244
  <a href="#aquarium-puzzle-type-27"><b>Aquarium</b><br><br>
245
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/aquarium_solved.png" alt="Aquarium" width="140">
245
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/aquarium_solved.png" alt="Aquarium" width="140">
246
246
  </a>
247
247
  </td>
248
248
  <td align="center">
249
249
  <a href="#stitches-puzzle-type-28"><b>Stitches</b><br><br>
250
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/stitches_solved.png" alt="Stitches" width="140">
250
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/stitches_solved.png" alt="Stitches" width="140">
251
251
  </a>
252
252
  </td>
253
253
  <td align="center">
254
254
  <a href="#battleships-puzzle-type-29"><b>Battleships</b><br><br>
255
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/battleships_solved.png" alt="Battleships" width="140">
255
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/battleships_solved.png" alt="Battleships" width="140">
256
256
  </a>
257
257
  </td>
258
258
  <td align="center">
259
259
  <a href="#kakurasu-puzzle-type-30"><b>Kakurasu</b><br><br>
260
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/kakurasu_solved.png" alt="Kakurasu" width="140">
260
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/kakurasu_solved.png" alt="Kakurasu" width="140">
261
261
  </a>
262
262
  </td>
263
263
  </tr>
264
264
  <tr>
265
265
  <td align="center">
266
266
  <a href="#star-battle-puzzle-type-31"><b>Star Battle</b><br><br>
267
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/star_battle_solved.png" alt="Star Battle" width="140">
267
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/star_battle_solved.png" alt="Star Battle" width="140">
268
268
  </a>
269
269
  </td>
270
270
  <td align="center">
271
271
  <a href="#star-battle-shapeless-puzzle-type-32"><b>Star Battle Shapeless</b><br><br>
272
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/star_battle_shapeless_solved.png" alt="Star Battle Shapeless" width="140">
272
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/star_battle_shapeless_solved.png" alt="Star Battle Shapeless" width="140">
273
273
  </a>
274
274
  </td>
275
275
  <td align="center">
276
276
  <a href="#lits-puzzle-type-33"><b>Lits</b><br><br>
277
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/lits_solved.png" alt="Lits" width="140">
277
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/lits_solved.png" alt="Lits" width="140">
278
278
  </a>
279
279
  </td>
280
280
  <td align="center">
281
281
  <a href="#black-box-puzzle-type-34"><b>Black Box</b><br><br>
282
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/black_box_solved.png" alt="Black Box" width="140">
282
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/black_box_solved.png" alt="Black Box" width="140">
283
283
  </a>
284
284
  </td>
285
285
  <td align="center">
286
286
  <a href="#galaxies-puzzle-type-35"><b>Galaxies</b><br><br>
287
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/galaxies_solved.png" alt="Galaxies" width="140">
287
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/galaxies_solved.png" alt="Galaxies" width="140">
288
288
  </a>
289
289
  </td>
290
290
  </tr>
291
291
  <tr>
292
292
  <td align="center">
293
293
  <a href="#slant-puzzle-type-36"><b>Slant</b><br><br>
294
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/slant_solved.png" alt="Slant" width="140">
294
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/slant_solved.png" alt="Slant" width="140">
295
295
  </a>
296
296
  </td>
297
297
  <td align="center">
298
298
  <a href="#unequal-puzzle-type-37"><b>Unequal</b><br><br>
299
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/unequal_solved.png" alt="Unequal" width="140">
299
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/unequal_solved.png" alt="Unequal" width="140">
300
300
  </a>
301
301
  </td>
302
302
  <td align="center">
303
303
  <a href="#norinori-puzzle-type-38"><b>Norinori</b><br><br>
304
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/norinori_solved.png" alt="Norinori" width="140">
304
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/norinori_solved.png" alt="Norinori" width="140">
305
305
  </a>
306
306
  </td>
307
307
  <td align="center">
308
308
  <a href="#slitherlink-puzzle-type-39"><b>Slitherlink</b><br><br>
309
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/slitherlink_solved.png" alt="Slitherlink" width="140">
309
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/slitherlink_solved.png" alt="Slitherlink" width="140">
310
310
  </a>
311
311
  </td>
312
312
  <td align="center">
313
313
  <a href="#yin-yang-puzzle-type-40"><b>Yin-Yang</b><br><br>
314
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/yin_yang_solved.png" alt="Yin-Yang" width="140">
314
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/yin_yang_solved.png" alt="Yin-Yang" width="140">
315
315
  </a>
316
316
  </td>
317
317
  </tr>
318
318
  <tr>
319
319
  <td align="center">
320
320
  <a href="#binairo-puzzle-type-41"><b>Binairo</b><br><br>
321
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/binairo_solved.png" alt="Binairo" width="140">
321
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/binairo_solved.png" alt="Binairo" width="140">
322
322
  </a>
323
323
  </td>
324
324
  <td align="center">
325
325
  <a href="#rectangles-puzzle-type-42"><b>Rectangles</b><br><br>
326
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/rectangles_solved.png" alt="Rectangles" width="140">
326
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/rectangles_solved.png" alt="Rectangles" width="140">
327
327
  </a>
328
328
  </td>
329
329
  <td align="center">
330
330
  <a href="#palisade-puzzle-type-43"><b>Palisade</b><br><br>
331
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/palisade_solved.png" alt="Palisade" width="140">
331
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/palisade_solved.png" alt="Palisade" width="140">
332
332
  </a>
333
333
  </td>
334
334
  <td align="center">
335
335
  <a href="#flip-puzzle-type-44"><b>Flip</b><br><br>
336
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/flip_unsolved.png" alt="Flip" width="140">
336
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/flip_unsolved.png" alt="Flip" width="140">
337
337
  </a>
338
338
  </td>
339
339
  <td align="center">
340
340
  <a href="#nurikabe-puzzle-type-45"><b>Nurikabe</b><br><br>
341
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/nurikabe_solved.png" alt="Nurikabe" width="140">
341
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/nurikabe_solved.png" alt="Nurikabe" width="140">
342
342
  </a>
343
343
  </td>
344
344
  </tr>
345
345
  <tr>
346
346
  <td align="center">
347
347
  <a href="#heyawake-puzzle-type-46"><b>Heyawake</b><br><br>
348
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/heyawake_solved.png" alt="Heyawake" width="140">
348
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/heyawake_solved.png" alt="Heyawake" width="140">
349
349
  </a>
350
350
  </td>
351
351
  <td align="center">
352
352
  <a href="#shingoki-puzzle-type-47"><b>Shingoki</b><br><br>
353
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/shingoki_solved.png" alt="Shingoki" width="140">
353
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/shingoki_solved.png" alt="Shingoki" width="140">
354
354
  </a>
355
355
  </td>
356
356
  <td align="center">
357
357
  <a href="#tapa-puzzle-type-48"><b>Tapa</b><br><br>
358
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/tapa_solved.png" alt="Tapa" width="140">
358
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/tapa_solved.png" alt="Tapa" width="140">
359
359
  </a>
360
360
  </td>
361
361
  <td align="center">
362
362
  <a href="#binairo-plus-puzzle-type-49"><b>Binairo Plus</b><br><br>
363
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/binairo_plus_solved.png" alt="Binairo Plus" width="140">
363
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/binairo_plus_solved.png" alt="Binairo Plus" width="140">
364
364
  </a>
365
365
  </td>
366
366
  <td align="center">
367
367
  <a href="#shakashaka-puzzle-type-50"><b>Shakashaka</b><br><br>
368
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/shakashaka_solved.png" alt="Shakashaka" width="140">
368
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/shakashaka_solved.png" alt="Shakashaka" width="140">
369
369
  </a>
370
370
  </td>
371
371
  </tr>
372
372
  <tr>
373
373
  <td align="center">
374
374
  <a href="#kakuro-puzzle-type-51"><b>Kakuro</b><br><br>
375
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/kakuro_solved.png" alt="Kakuro" width="140">
375
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/kakuro_solved.png" alt="Kakuro" width="140">
376
376
  </a>
377
377
  </td>
378
378
  <td align="center">
379
379
  <a href="#sudoku-jigsaw-puzzle-type-52"><b>Sudoku Jigsaw</b><br><br>
380
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/sudoku_jigsaw_solved.png" alt="Sudoku Jigsaw" width="140">
380
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/sudoku_jigsaw_solved.png" alt="Sudoku Jigsaw" width="140">
381
381
  </a>
382
382
  </td>
383
383
  <td align="center">
384
384
  <a href="#sudoku-killer-puzzle-type-53"><b>Sudoku Killer</b><br><br>
385
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/sudoku_killer_solved.png" alt="Sudoku Killer" width="140">
385
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/sudoku_killer_solved.png" alt="Sudoku Killer" width="140">
386
386
  </a>
387
387
  </td>
388
388
  <td align="center">
389
389
  <a href="#flood-it-puzzle-type-54"><b>Flood It</b><br><br>
390
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/flood_it_unsolved.png" alt="Flood It" width="140">
390
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/flood_it_unsolved.png" alt="Flood It" width="140">
391
391
  </a>
392
392
  </td>
393
393
  <td align="center">
394
394
  <a href="#pipes-puzzle-type-55"><b>Pipes</b><br><br>
395
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/pipes_solved.png" alt="Pipes" width="140">
395
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/pipes_solved.png" alt="Pipes" width="140">
396
396
  </a>
397
397
  </td>
398
398
  </tr>
399
399
  <tr>
400
400
  <td align="center">
401
401
  <a href="#connect-the-dots-puzzle-type-56"><b>Connect the Dots</b><br><br>
402
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/connect_the_dots_solved.png" alt="Connect the Dots" width="140">
402
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/connect_the_dots_solved.png" alt="Connect the Dots" width="140">
403
+ </a>
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/puzzles/nonograms_colored_solved.png" alt="Nonograms Colored" width="140">
408
+ </a>
409
+ </td>
410
+ <td align="center">
411
+ <a href="#abc-view-puzzle-type-58"><b>ABC View</b><br><br>
412
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/abc_view_solved.png" alt="ABC View" width="140">
403
413
  </a>
404
414
  </td>
405
415
  </tr>
@@ -473,6 +483,8 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
473
483
  - [Flood It (Puzzle Type #54)](#flood-it-puzzle-type-54)
474
484
  - [Pipes (Puzzle Type #55)](#pipes-puzzle-type-55)
475
485
  - [Connect the Dots (Puzzle Type #56)](#connect-the-dots-puzzle-type-56)
486
+ - [Nonograms Colored (Puzzle Type #57)](#nonograms-colored-puzzle-type-57)
487
+ - [ABC View (Puzzle Type #58)](#abc-view-puzzle-type-58)
476
488
  - [Why SAT / CP-SAT?](#why-sat--cp-sat)
477
489
  - [Testing](#testing)
478
490
  - [Contributing](#contributing)
@@ -486,7 +498,7 @@ The puzzles that have solvers implemented are listed below. Each puzzle has a si
486
498
 
487
499
  ## Nonograms (Puzzle Type #1)
488
500
 
489
- Also known as Hanjie, Paint by Numbers, Griddlers, Pic-a-Pix, Picross, and Pattern.
501
+ Also known as Nonogrids, Numbergrids, or Picross.
490
502
 
491
503
  * [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/pattern.html)
492
504
 
@@ -501,7 +513,7 @@ You have a grid of squares, which must all be filled in either black or white. B
501
513
 
502
514
  **Unsolved puzzle**
503
515
 
504
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/nonogram_unsolved.png" alt="Nonogram unsolved" width="500">
516
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/nonogram_unsolved.png" alt="Nonogram unsolved" width="500">
505
517
 
506
518
  Code to utilize this package and solve the puzzle:
507
519
  ```python
@@ -546,21 +558,39 @@ solutions = binst.solve_and_print()
546
558
  **Script Output**
547
559
  ```python
548
560
  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 . .
561
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
562
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
563
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
564
+ 0│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │ │ │ │
565
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
566
+ 1│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │ │▒▒▒│ │▒▒▒│
567
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
568
+ 2│▒▒▒│▒▒▒│ │ │ │ │ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│ │
569
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
570
+ 3│▒▒▒│▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│
571
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
572
+ 4│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │ │ │ │ │ │ │▒▒▒│▒▒▒│
573
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
574
+ 5│▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ │ │▒▒▒│ │ │ │▒▒▒│▒▒▒│
575
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
576
+ 6│▒▒▒│ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │▒▒▒│
577
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
578
+ 7│▒▒▒│ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│
579
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
580
+ 8│ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │
581
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
582
+ 9│ │ │ │ │ │▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │
583
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
584
+ 10│ │ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │
585
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
586
+ 11│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │
587
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
588
+ 12│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│ │ │ │
589
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
590
+ 13│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │▒▒▒│▒▒▒│▒▒▒│ │ │ │
591
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
592
+ 14│ │▒▒▒│▒▒▒│▒▒▒│ │ │ │ │ │ │ │▒▒▒│▒▒▒│ │ │
593
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
564
594
  Solutions found: 1
565
595
  status: OPTIMAL
566
596
  Time taken: 0.04 seconds
@@ -568,7 +598,7 @@ Time taken: 0.04 seconds
568
598
 
569
599
  **Solved puzzle**
570
600
 
571
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/nonogram_solved.png" alt="Nonogram solved" width="500">
601
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/nonogram_solved.png" alt="Nonogram solved" width="500">
572
602
 
573
603
  ---
574
604
 
@@ -595,7 +625,7 @@ You are given some of the numbers as clues; your aim is to place the rest of the
595
625
 
596
626
  **Unsolved puzzle**
597
627
 
598
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/sudoku_unsolved.png" alt="Sudoku unsolved" width="500">
628
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/sudoku_unsolved.png" alt="Sudoku unsolved" width="500">
599
629
 
600
630
  Code to utilize this package and solve the puzzle:
601
631
 
@@ -636,22 +666,41 @@ assert len(solutions) == 1, f'unique solutions != 1, == {len(solutions)}'
636
666
  **Script Output**
637
667
  ```python
638
668
  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']]
669
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
670
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
671
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
672
+ 0│ g 7 5 4 9 1 c e │ d │ f │ b │ 8 │ 2 │ 6 │ 3 │ a │
673
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
674
+ 1│ 3 9 d │ e │ f │ a │ 7 │ g │ 2 6 │ 4 c │ 5 │ 1 8 b
675
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
676
+ 2│ b c 1 8 5 │ 6 │ 3 │ 2 │ e 9 │ 7 │ a 4 │ g │ f │ d │
677
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
678
+ 3│ f │ 6 │ 2 │ a │ b │ 8 │ d │ 4 1 3 5 g c 7 9 │ e │
679
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
680
+ 4│ 4 a │ e │ 3 │ 8 │ f │ 1 │ 6 │ 5 b │ 2 9 g d c 7
681
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
682
+ 5│ 6 g │ f │ c e │ d │ 2 │ 5 │ 4 │ 7 │ a │ 1 │ 3 9 b 8
683
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
684
+ 6│ d │ 1 │ 9 │ 2 │ a │ 3 b 7 c │ g │ 8 6 │ e f │ 5 4
685
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
686
+ 7│ 5 │ b │ 8 │ 7 │ g │ 4 │ 9 │ c │ f │ d │ 3 │ e │ 1 │ a │ 2 │ 6 │
687
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
688
+ 8│ 2 │ e │ a │ b │ d │ c │ g │ 1 │ 3 │ 8 │ 9 │ f │ 7 │ 4 │ 6 │ 5 │
689
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
690
+ 9│ 8 │ 4 │ 6 │ 1 │ 3 │ b │ e │ f │ 7 │ 5 │ c │ d │ a │ 2 │ g │ 9 │
691
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
692
+ 10│ 9 │ f │ 3 │ g │ 7 │ 5 │ 8 │ a │ 6 │ 4 │ e │ 2 │ d │ b │ 1 │ c │
693
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
694
+ 11│ c │ d │ 7 │ 5 │ 4 │ 2 │ 6 │ 9 │ g │ a │ 1 │ b │ 8 │ 3 │ e │ f │
695
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
696
+ 12│ 7 │ 5 │ g │ d │ 2 │ 9 │ a │ b │ 8 │ c │ f │ 3 │ 6 │ e │ 4 │ 1 │
697
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
698
+ 13│ a │ 2 │ b │ 6 │ c │ e │ 5 │ 3 │ 9 │ 1 │ d │ 4 │ f │ 8 │ 7 │ g │
699
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
700
+ 14│ e │ 8 │ c │ f │ 1 │ g │ 4 │ d │ b │ 2 │ 6 │ 7 │ 9 │ 5 │ a │ 3 │
701
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
702
+ 15│ 1 │ 3 │ 4 │ 9 │ 6 │ 7 │ f │ 8 │ a │ e │ g │ 5 │ b │ c │ d │ 2 │
703
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
655
704
  Solutions found: 1
656
705
  status: OPTIMAL
657
706
  Time taken: 0.04 seconds
@@ -659,7 +708,7 @@ Time taken: 0.04 seconds
659
708
 
660
709
  **Solved puzzle**
661
710
 
662
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/sudoku_solved.png" alt="Sudoku solved" width="500">
711
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/sudoku_solved.png" alt="Sudoku solved" width="500">
663
712
 
664
713
  ---
665
714
 
@@ -690,7 +739,7 @@ This version of it has an unusual property. By default, it will generate its min
690
739
 
691
740
  **Partially solved puzzle**
692
741
 
693
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/minesweeper_pre.png" alt="Minesweeper partially solved" width="500">
742
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/minesweeper_pre.png" alt="Minesweeper partially solved" width="500">
694
743
 
695
744
  Code to utilize this package and solve the puzzle:
696
745
  ```python
@@ -737,7 +786,7 @@ Time taken: 0.92 seconds
737
786
 
738
787
  **Progressed puzzle**
739
788
 
740
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/minesweeper_post.png" alt="Minesweeper progressed" width="500">
789
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/minesweeper_post.png" alt="Minesweeper progressed" width="500">
741
790
 
742
791
  ---
743
792
 
@@ -758,7 +807,7 @@ Your task is to reconstruct the pattern by arranging the set of dominoes to matc
758
807
 
759
808
  **Unsolved puzzle**
760
809
 
761
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/dominosa_unsolved.png" alt="Dominosa unsolved" width="500">
810
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/dominosa_unsolved.png" alt="Dominosa unsolved" width="500">
762
811
 
763
812
  Code to utilize this package and solve the puzzle:
764
813
  ```python
@@ -800,7 +849,7 @@ Time taken: 0.02 seconds
800
849
 
801
850
  **Solved puzzle**
802
851
 
803
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/dominosa_solved.png" alt="Dominosa solved" width="500">
852
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/dominosa_solved.png" alt="Dominosa solved" width="500">
804
853
 
805
854
  ---
806
855
 
@@ -831,7 +880,7 @@ Non-numbered black squares may have any number of lights adjacent to them.
831
880
 
832
881
  **Unsolved puzzle**
833
882
 
834
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/lightup_unsolved.png" alt="Light Up unsolved" width="500">
883
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/lightup_unsolved.png" alt="Light Up unsolved" width="500">
835
884
 
836
885
  Code to utilize this package and solve the puzzle:
837
886
  ```python
@@ -875,7 +924,7 @@ Time taken: 0.01 seconds
875
924
 
876
925
  Which exactly matches the true solutions (Remember, the goal of the puzzle is to find where to place the lights, marked as 'L' in the solution above):
877
926
 
878
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/lightup_solved.png" alt="Light Up solved" width="500">
927
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/lightup_solved.png" alt="Light Up solved" width="500">
879
928
 
880
929
  ---
881
930
 
@@ -899,7 +948,7 @@ You have a grid of squares, some of which contain trees. Your aim is to place te
899
948
 
900
949
  **Unsolved puzzle**
901
950
 
902
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/tents_unsolved.png" alt="Tents unsolved" width="500">
951
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/tents_unsolved.png" alt="Tents unsolved" width="500">
903
952
 
904
953
  Code to utilize this package and solve the puzzle:
905
954
  ```python
@@ -929,31 +978,52 @@ binst = solver.Board(board=board, sides={'top': top, 'side': side})
929
978
  solutions = binst.solve_and_print()
930
979
  ```
931
980
  **Script Output**
932
- ```python
981
+
982
+ (Note: ▲ represents a tent)
983
+
984
+ ```
933
985
  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' ' ' ' ']]
986
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
987
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
988
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
989
+ 0│ │ | │ │ │ │ │ | │ │ | | │ │
990
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
991
+ 1│ │ │ │ │ | │ │ | │ │ | │ │ │ | │ │ │
992
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
993
+ 2│ | | │ │ │ │ │ │ │ │ │ │ │
994
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
995
+ 3│ │ │ │ │ │ │ │ │ | │ │ │ │ | │ │ |
996
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
997
+ 4│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
998
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
999
+ 5│ │ | │ │ │ | │ │ | │ │ │ | │ │ | |
1000
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1001
+ 6│ │ | │ │ │ | │ ▲ │ │ ▲ │ | │ │ │ │ ▲ │ │ │
1002
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1003
+ 7│ │ ▲ │ │ │ │ │ | │ │ │ │ │ │ │ │ │
1004
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1005
+ 8│ │ │ │ │ ▲ │ | │ ▲ │ │ │ ▲ │ | │ │ ▲ │ | │ ▲ │
1006
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1007
+ 9│ ▲ │ │ ▲ │ | │ │ │ │ │ │ │ │ │ | │ │ | │
1008
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1009
+ 10│ | │ │ │ │ │ │ │ | │ ▲ │ │ │ | │ ▲ │ │ ▲ │
1010
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1011
+ 11│ | │ │ │ ▲ │ | │ ▲ │ | │ │ │ │ │ │ │ │ │
1012
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1013
+ 12│ ▲ │ │ │ │ │ │ │ │ | │ ▲ │ | │ ▲ │ │ ▲ │ | │
1014
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1015
+ 13│ │ | │ ▲ │ │ ▲ │ | │ ▲ │ │ │ │ │ │ | │ │ │
1016
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1017
+ 14│ ▲ │ | │ │ │ | │ │ │ │ ▲ │ | │ ▲ │ | │ ▲ │ │ │
1018
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
949
1019
  Solutions found: 1
950
1020
  status: OPTIMAL
951
- Time taken: 0.02 seconds
1021
+ Time taken: 0.01 seconds
952
1022
  ```
953
1023
 
954
1024
  **Solved puzzle**
955
1025
 
956
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/tents_solved.png" alt="Tents solved" width="500">
1026
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/tents_solved.png" alt="Tents solved" width="500">
957
1027
 
958
1028
  ---
959
1029
 
@@ -980,7 +1050,7 @@ Note: It may take a few seconds for the model to be built.
980
1050
 
981
1051
  **Unsolved puzzle**
982
1052
 
983
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/filling_unsolved.png" alt="Filling unsolved" width="500">
1053
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/filling_unsolved.png" alt="Filling unsolved" width="500">
984
1054
 
985
1055
  Code to utilize this package and solve the puzzle:
986
1056
  ```python
@@ -1001,26 +1071,35 @@ assert len(solutions) == 1, f'unique solutions != 1, == {len(solutions)}'
1001
1071
  **Script Output**
1002
1072
  ```python
1003
1073
  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]]
1074
+
1075
+ 0 1 2 3 4 5 6
1076
+ ┌───────┬───────┬───┬───────┐
1077
+ 0│ 4 4 2 2 4 │ 2 2 │
1078
+ │ ├───┬───┘ ├───────┤
1079
+ 1 4 4 7 4 4 │ 3 3 │
1080
+ ├───────┘ ├───┐ ├───┐ │
1081
+ 2│ 7 7 7 │ 3 │ 4 │ 5 │ 3 │
1082
+ │ ┌───────┤ └───┤ └───┤
1083
+ 3│ 7 │ 6 6 │ 3 3 │ 5 5 │
1084
+ │ └───┐ └───┬───┤ │
1085
+ 4│ 7 7 │ 6 6 │ 4 │ 5 5 │
1086
+ ├───┬───┘ ┌───┤ └───────┤
1087
+ 5│ 1 │ 6 6 │ 1 │ 4 4 4 │
1088
+ └───┴───────┴───┴───────────┘
1010
1089
  Solutions found: 1
1011
1090
  status: OPTIMAL
1012
- Time taken: 0.10 seconds
1091
+ Time taken: 0.15 seconds
1013
1092
  ```
1014
1093
 
1015
1094
  **Solved puzzle**
1016
1095
 
1017
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/filling_solved.png" alt="Filling solved" width="500">
1096
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/filling_solved.png" alt="Filling solved" width="500">
1018
1097
 
1019
1098
  ---
1020
1099
 
1021
1100
  ## Keen (Puzzle Type #8)
1022
1101
 
1023
- Also known as KenKen
1102
+ Also known as KenKen or CalcuDoku.
1024
1103
 
1025
1104
  * [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/keen.html)
1026
1105
 
@@ -1045,7 +1124,7 @@ You have a square grid; each square may contain a digit from 1 to the size of th
1045
1124
 
1046
1125
  **Unsolved puzzle**
1047
1126
 
1048
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/keen_unsolved.png" alt="Keen unsolved" width="500">
1127
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/keen_unsolved.png" alt="Keen unsolved" width="500">
1049
1128
 
1050
1129
  Code to utilize this package and solve the puzzle:
1051
1130
  ```python
@@ -1096,12 +1175,14 @@ Time taken: 0.02 seconds
1096
1175
 
1097
1176
  **Solved puzzle**
1098
1177
 
1099
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/keen_solved.png" alt="Keen solved" width="500">
1178
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/keen_solved.png" alt="Keen solved" width="500">
1100
1179
 
1101
1180
  ---
1102
1181
 
1103
1182
  ## Towers (Puzzle Type #9)
1104
1183
 
1184
+ Also known as Skyscrapers.
1185
+
1105
1186
  * [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/towers.html)
1106
1187
 
1107
1188
  * [**Instructions**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/doc/towers.html#towers)
@@ -1123,7 +1204,7 @@ In harder or larger puzzles, some towers will be specified for you as well as th
1123
1204
 
1124
1205
  **Unsolved puzzle**
1125
1206
 
1126
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/towers_unsolved.png" alt="Towers unsolved" width="500">
1207
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/towers_unsolved.png" alt="Towers unsolved" width="500">
1127
1208
 
1128
1209
  Code to utilize this package and solve the puzzle:
1129
1210
  ```python
@@ -1160,7 +1241,7 @@ Time taken: 0.03 seconds
1160
1241
 
1161
1242
  **Solved puzzle**
1162
1243
 
1163
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/towers_solved.png" alt="Towers solved" width="500">
1244
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/towers_solved.png" alt="Towers solved" width="500">
1164
1245
 
1165
1246
  ---
1166
1247
 
@@ -1187,7 +1268,7 @@ You have a grid of white squares, all of which contain numbers. Your task is to
1187
1268
 
1188
1269
  **Unsolved puzzle**
1189
1270
 
1190
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/singles_unsolved.png" alt="Singles unsolved" width="500">
1271
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/singles_unsolved.png" alt="Singles unsolved" width="500">
1191
1272
 
1192
1273
  Code to utilize this package and solve the puzzle:
1193
1274
  ```python
@@ -1249,7 +1330,7 @@ Time taken: 0.04 seconds
1249
1330
 
1250
1331
  **Solved puzzle**
1251
1332
 
1252
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/singles_solved.png" alt="Singles solved" width="500">
1333
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/singles_solved.png" alt="Singles solved" width="500">
1253
1334
 
1254
1335
  ---
1255
1336
 
@@ -1270,7 +1351,7 @@ Your aim is to correctly place the magnets and blank dominoes such that all the
1270
1351
 
1271
1352
  **Unsolved puzzle**
1272
1353
 
1273
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/magnets_unsolved.png" alt="Magnets unsolved" width="500">
1354
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/magnets_unsolved.png" alt="Magnets unsolved" width="500">
1274
1355
 
1275
1356
  Code to utilize this package and solve the puzzle:
1276
1357
  ```python
@@ -1314,7 +1395,7 @@ Time taken: 0.02 seconds
1314
1395
 
1315
1396
  **Solved puzzle**
1316
1397
 
1317
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/magnets_solved.png" alt="Magnets solved" width="500">
1398
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/magnets_solved.png" alt="Magnets solved" width="500">
1318
1399
 
1319
1400
 
1320
1401
  ---
@@ -1336,7 +1417,7 @@ By convention the first and last numbers are shown; one or more interim numbers
1336
1417
 
1337
1418
  **Unsolved puzzle**
1338
1419
 
1339
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/signpost_unsolved.png" alt="Signpost unsolved" width="500">
1420
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/signpost_unsolved.png" alt="Signpost unsolved" width="500">
1340
1421
 
1341
1422
  Code to utilize this package and solve the puzzle:
1342
1423
  ```python
@@ -1382,7 +1463,7 @@ Time taken: 0.03 seconds
1382
1463
 
1383
1464
  **Solved puzzle**
1384
1465
 
1385
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/signpost_solved.png" alt="Signpost solved" width="500">
1466
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/signpost_solved.png" alt="Signpost solved" width="500">
1386
1467
 
1387
1468
 
1388
1469
  ---
@@ -1413,24 +1494,24 @@ For instance, a square containing the number one must have four black squares as
1413
1494
 
1414
1495
  **Unsolved puzzle**
1415
1496
 
1416
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/range_unsolved.png" alt="Range unsolved" width="500">
1497
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/range_unsolved.png" alt="Range unsolved" width="500">
1417
1498
 
1418
1499
  Code to utilize this package and solve the puzzle:
1419
1500
  ```python
1420
1501
  import numpy as np
1421
1502
  from puzzle_solver import range_solver as solver
1422
1503
  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],
1504
+ [' ', '4 ', '2 ', ' ', ' ', '3 ', ' ', ' ', ' ', '8 ', ' ', ' ', ' ', ' ', '6 ', ' '],
1505
+ [' ', ' ', ' ', ' ', ' ', '13', ' ', '18', ' ', ' ', '14', ' ', ' ', '22', ' ', ' '],
1506
+ [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '12', ' ', ' ', ' ', ' '],
1507
+ [' ', ' ', ' ', ' ', '12', ' ', '11', ' ', ' ', ' ', '9 ', ' ', ' ', ' ', ' ', ' '],
1508
+ ['7 ', ' ', ' ', ' ', ' ', ' ', '6 ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
1509
+ [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
1510
+ [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '12', ' ', ' ', ' ', ' ', ' ', '5 '],
1511
+ [' ', ' ', ' ', ' ', ' ', '9 ', ' ', ' ', ' ', '9 ', ' ', '4 ', ' ', ' ', ' ', ' '],
1512
+ [' ', ' ', ' ', ' ', '6 ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
1513
+ [' ', ' ', '10', ' ', ' ', '7 ', ' ', ' ', '13', ' ', '10', ' ', ' ', ' ', ' ', ' '],
1514
+ [' ', '7 ', ' ', ' ', ' ', ' ', '6 ', ' ', ' ', ' ', '6 ', ' ', ' ', '13', '5 ', ' '],
1434
1515
  ])
1435
1516
  binst = solver.Board(clues)
1436
1517
  solutions = binst.solve_and_print()
@@ -1438,25 +1519,39 @@ solutions = binst.solve_and_print()
1438
1519
  **Script Output**
1439
1520
  ```python
1440
1521
  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 . . .
1522
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
1523
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
1524
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
1525
+ 0│▒▒▒│ 4 2 │▒▒▒│ │ 3 │▒▒▒│ │▒▒▒│ 8 │▒▒▒│ │▒▒▒│ │ 6 │ │
1526
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1527
+ 1│ │ │▒▒▒│ │ │13 │ │18 │ │ │14 │ │ │22 │ │▒▒▒│
1528
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1529
+ 2│▒▒▒│ │ │ │ │▒▒▒│ │ │ │ │ │12 │ │ │ │ │
1530
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1531
+ 3│ │▒▒▒│ │▒▒▒│12 │ │11 │ │ │ │ 9 │▒▒▒│ │ │ │ │
1532
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1533
+ 4│ 7 │ │ │ │ │▒▒▒│ 6 │ │▒▒▒│ │▒▒▒│ │ │ │▒▒▒│ │
1534
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1535
+ 5│ │ │▒▒▒│ │ │ │ │ │ │ │ │▒▒▒│ │ │ │▒▒▒│
1536
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1537
+ 6│▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ │ │12 │ │ │▒▒▒│ │ │ 5 │
1538
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1539
+ 7│ │ │ │ │ │ 9 │ │▒▒▒│ │ 9 │▒▒▒│ 4 │ │ │▒▒▒│ │
1540
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1541
+ 8│ │▒▒▒│ │ │ 6 │▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ │ │ │ │
1542
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1543
+ 9│ │ │10 │ │ │ 7 │▒▒▒│ │13 │ │10 │ │ │ │ │▒▒▒│
1544
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1545
+ 10│▒▒▒│ 7 │ │ │ │ │ 6 │▒▒▒│ │ │ 6 │ │▒▒▒│13 │ 5 │ │
1546
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
1452
1547
  Solutions found: 1
1453
1548
  status: OPTIMAL
1454
- Time taken: 0.04 seconds
1549
+ Time taken: 0.07 seconds
1455
1550
  ```
1456
1551
 
1457
1552
  **Solved puzzle**
1458
1553
 
1459
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/range_solved.png" alt="Range solved" width="500">
1554
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/range_solved.png" alt="Range solved" width="500">
1460
1555
 
1461
1556
  ---
1462
1557
 
@@ -1479,7 +1574,7 @@ You are also told the total number of each type of monster in the grid. Also aro
1479
1574
 
1480
1575
  **Unsolved puzzle**
1481
1576
 
1482
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/undead_unsolved.png" alt="UnDead unsolved" width="500">
1577
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/undead_unsolved.png" alt="UnDead unsolved" width="500">
1483
1578
 
1484
1579
  Code to utilize this package and solve the puzzle:
1485
1580
  ```python
@@ -1521,12 +1616,14 @@ Time taken: 0.01 seconds
1521
1616
 
1522
1617
  **Solved puzzle**
1523
1618
 
1524
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/undead_solved.png" alt="UnDead solved" width="500">
1619
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/undead_solved.png" alt="UnDead solved" width="500">
1525
1620
 
1526
1621
  ---
1527
1622
 
1528
1623
  ## Unruly (Puzzle Type #15)
1529
1624
 
1625
+ Also known as "3-In-A-Row".
1626
+
1530
1627
  * [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/unruly.html)
1531
1628
 
1532
1629
  * [**Instructions**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/doc/unruly.html#unruly)
@@ -1540,7 +1637,7 @@ You are given a grid of squares, which you must colour either black or white. So
1540
1637
 
1541
1638
  **Unsolved puzzle**
1542
1639
 
1543
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/unruly_unsolved.png" alt="Unruly unsolved" width="500">
1640
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/unruly_unsolved.png" alt="Unruly unsolved" width="500">
1544
1641
 
1545
1642
  Code to utilize this package and solve the puzzle:
1546
1643
  ```python
@@ -1568,28 +1665,45 @@ solutions = binst.solve_and_print()
1568
1665
  **Script Output**
1569
1666
  ```python
1570
1667
  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']]
1668
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1
1669
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3
1670
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
1671
+ 0│ │ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │ │▒▒▒│
1672
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1673
+ 1│▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│ │
1674
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1675
+ 2│ │ │▒▒▒│ │ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│
1676
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1677
+ 3│ │▒▒▒│ │▒▒▒│▒▒▒│ │ │▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│
1678
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1679
+ 4│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │ │▒▒▒│ │
1680
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1681
+ 5│▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │ │
1682
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1683
+ 6│ │▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│ │ │▒▒▒│▒▒▒│ │▒▒▒│
1684
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1685
+ 7│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │ │▒▒▒│▒▒▒│ │▒▒▒│ │
1686
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1687
+ 8│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │ │▒▒▒│ │ │
1688
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1689
+ 9│ │ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │ │▒▒▒│▒▒▒│
1690
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1691
+ 10│▒▒▒│▒▒▒│ │ │▒▒▒│ │ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │
1692
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1693
+ 11│▒▒▒│ │▒▒▒│ │ │▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│ │▒▒▒│
1694
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1695
+ 12│ │▒▒▒│ │▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│ │ │▒▒▒│
1696
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1697
+ 13│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │ │▒▒▒│▒▒▒│ │
1698
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
1585
1699
  Solutions found: 1
1586
1700
  status: OPTIMAL
1587
- Time taken: 0.01 seconds
1701
+ Time taken: 0.02 seconds
1588
1702
  ```
1589
1703
 
1590
1704
  **Solved puzzle**
1591
1705
 
1592
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/unruly_solved.png" alt="Unruly solved" width="500">
1706
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/unruly_solved.png" alt="Unruly solved" width="500">
1593
1707
 
1594
1708
  ---
1595
1709
 
@@ -1609,7 +1723,7 @@ Complete the track from A to B so that the rows and columns contain the same num
1609
1723
 
1610
1724
  **Unsolved puzzle**
1611
1725
 
1612
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/tracks_unsolved.png" alt="Tracks unsolved" width="500">
1726
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/tracks_unsolved.png" alt="Tracks unsolved" width="500">
1613
1727
 
1614
1728
  Code to utilize this package and solve the puzzle:
1615
1729
  ```python
@@ -1639,29 +1753,48 @@ solutions = binst.solve_and_print()
1639
1753
  ```
1640
1754
  **Script Output**
1641
1755
  ```python
1642
- [[' ' ' ' ' ' ' ' ' ' ' ' '┏━' '━━' '━━' '━━' '━━' '━━' '━┒' '┏━' '━┒']
1643
- [' ' ' ' ' ' ' ' ' ' ' ' '┃ ' ' ' '┏━' '━━' '━┒' ' ' '┗━' '━┛' '┃ ']
1644
- [' ' ' ' ' ' ' ' ' ' ' ' '┃ ' ' ' '┃ ' ' ' '┗━' '━━' '━━' '━━' '━┛']
1645
- [' ' ' ' '┏━' '━┒' '┏━' '━┒' '┃ ' '┏━' '━┛' ' ' ' ' ' ' ' ' ' ' ' ']
1646
- ['┏━' '━━' '━┛' '┃ ' '┃ ' '┗━' '━┛' '┗━' '━┒' ' ' ' ' ' ' ' ' '┏━' '━┒']
1647
- ['┗━' '━━' '━┒' '┗━' '━┛' ' ' ' ' '┏━' '━┛' ' ' ' ' ' ' '┏━' '━┛' '┃ ']
1648
- [' ' ' ' '┃ ' ' ' ' ' ' ' '┏━' '━┛' '┏━' '━━' '━━' '━━' '━┛' ' ' '┃ ']
1649
- [' ' '┏━' '━┛' ' ' ' ' ' ' '┗━' '━━' '━┛' ' ' ' ' ' ' '┏━' '━━' '━┛']
1650
- [' ' '┗━' '━┒' ' ' ' ' ' ' ' ' ' ' '┏━' '━━' '━━' '━┒' '┃ ' '┏━' '━┒']
1651
- ['┏━' '━━' '━┛' ' ' ' ' ' ' ' ' ' ' '┃ ' '┏━' '━┒' '┗━' '━┛' '┃ ' '┃ ']
1652
- ['┃ ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '┗━' '━┛' '┗━' '━┒' ' ' '┃ ' '┃ ']
1653
- ['┃ ' ' ' ' ' ' ' ' ' ' ' ' ' '┏━' '━━' '━━' '━━' '━┛' '┏━' '━┛' '┃ ']
1654
- ['━┛' ' ' ' ' ' ' ' ' ' ' ' ' '┗━' '━━' '━━' '━━' '━━' '━┛' '┏━' '━┛']
1655
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '┗━' '━┒']
1656
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '┏━' '━┛']]
1756
+ Solution found
1757
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
1758
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
1759
+
1760
+ 0 . . . . . . ┌───────────────────────┐ ┌───┐
1761
+ │ │ │ │
1762
+ 1 . . . . . . │ . ┌───────┐ . └───┘ │
1763
+ │ │ │ │
1764
+ 2 . . . . . . │ . │ . └───────────────┘
1765
+ │ │
1766
+ 3 . . ┌───┐ ┌───┐ │ ┌───┘ . . . . . .
1767
+ │ │ │ │ │ │
1768
+ 4 ┌───────┘ │ │ └───┘ └───┐ . . . . ┌───┐
1769
+ │ │ │ │ │ │
1770
+ 5 └───────┐ └───┘ . . ┌───┘ . . . ┌───┘ │
1771
+ │ │ │ │
1772
+ 6 . . │ . . . ┌───┘ ┌───────────────┘ . │
1773
+ │ │ │ │
1774
+ 7 . ┌───┘ . . . └───────┘ . . . ┌───────┘
1775
+ │ │
1776
+ 8 . └───┐ . . . . . ┌───────────┐ │ ┌───┐
1777
+ │ │ │ │ │ │
1778
+ 9 ┌───────┘ . . . . . │ ┌───┐ └───┘ │ │
1779
+ │ │ │ │ │ │
1780
+ 10 │ . . . . . . . └───┘ └───┐ . │ │
1781
+ │ │ │ │
1782
+ 11 │ . . . . . . ┌───────────────┘ ┌───┘ │
1783
+ │ │ │ │
1784
+ 12──┘ . . . . . . └───────────────────┘ ┌───┘
1785
+
1786
+ 13 . . . . . . . . . . . . . └───┐
1787
+
1788
+ 14 . . . . . . . . . . . . . ┌───┘
1789
+
1657
1790
  Solutions found: 1
1658
1791
  status: OPTIMAL
1659
- Time taken: 1.04 seconds
1792
+ Time taken: 1.01 seconds
1660
1793
  ```
1661
1794
 
1662
1795
  **Solved puzzle**
1663
1796
 
1664
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/tracks_solved.png" alt="Tracks solved" width="500">
1797
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/tracks_solved.png" alt="Tracks solved" width="500">
1665
1798
 
1666
1799
  ---
1667
1800
 
@@ -1682,7 +1815,7 @@ Some squares contain clue numbers. Each clue tells you the number of black squar
1682
1815
 
1683
1816
  **Unsolved puzzle**
1684
1817
 
1685
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/mosaic_unsolved.png" alt="Mosaic unsolved" width="500">
1818
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mosaic_unsolved.png" alt="Mosaic unsolved" width="500">
1686
1819
 
1687
1820
  Code to utilize this package and solve the puzzle:
1688
1821
  ```python
@@ -1711,29 +1844,47 @@ solutions = binst.solve_and_print()
1711
1844
  **Script Output**
1712
1845
  ```python
1713
1846
  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']]
1847
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
1848
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
1849
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
1850
+ 0│ │▒▒▒│ 2 1 │ │ │ │ 3 │▒▒▒│ 4 │▒▒▒│ 2 │ │▒▒▒│▒▒▒│
1851
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1852
+ 1│ 3 │▒▒▒│ │ │▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │ 2 │▒▒▒│▒▒▒│
1853
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1854
+ 2│ 4 │▒▒▒│▒▒▒│ 5 │▒▒▒│▒▒▒│ │ │ 5 │▒▒▒│▒▒▒│ 3 2 5 │▒▒▒│
1855
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1856
+ 3│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ 4 │ │▒▒▒│▒▒▒│▒▒▒│ │ │ │▒▒▒│ 5 │▒▒▒│
1857
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1858
+ 4│ │▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │
1859
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1860
+ 5│ 3 │▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ 7 │▒▒▒│ 4 │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│
1861
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1862
+ 6│▒▒▒│ │▒▒▒│ │ 5 │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ 1 │ 3 │ 4 │ 5 │ │
1863
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1864
+ 7│ │ 5 │▒▒▒│ 4 │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ 3 │ │▒▒▒│ │▒▒▒│
1865
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1866
+ 8│ 3 │▒▒▒│▒▒▒│ │ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │
1867
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1868
+ 9│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ 4 │ 6 │▒▒▒│▒▒▒│ 3 │ │▒▒▒│ │
1869
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1870
+ 10│ 5 │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │ 3 │ 5 │▒▒▒│ │
1871
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1872
+ 11│▒▒▒│▒▒▒│ │ 5 │▒▒▒│ 5 │ 3 │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│
1873
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1874
+ 12│ 2 │ │▒▒▒│ │▒▒▒│ 4 │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│
1875
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1876
+ 13│ 1 │ │▒▒▒│▒▒▒│ │ │▒▒▒│ 5 │▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ 6 │ │
1877
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
1878
+ 14│▒▒▒│ │▒▒▒│ │ 2 │▒▒▒│▒▒▒│ │ 2 │ │ │ │▒▒▒│▒▒▒│▒▒▒│
1879
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
1729
1880
  Solutions found: 1
1730
1881
  status: OPTIMAL
1731
- Time taken: 0.01 seconds
1882
+ Time taken: 0.02 seconds
1732
1883
  ```
1733
1884
 
1734
1885
  **Solved puzzle**
1735
1886
 
1736
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/mosaic_solved.png" alt="Mosaic solved" width="500">
1887
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/mosaic_solved.png" alt="Mosaic solved" width="500">
1737
1888
 
1738
1889
  ---
1739
1890
 
@@ -1754,7 +1905,7 @@ Only regions which share a length of border are required to be different colours
1754
1905
 
1755
1906
  **Unsolved puzzle**
1756
1907
 
1757
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/map_unsolved.png" alt="Map unsolved" width="500">
1908
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/map_unsolved.png" alt="Map unsolved" width="500">
1758
1909
 
1759
1910
  Code to utilize this package and solve the puzzle:
1760
1911
  ```python
@@ -1793,7 +1944,7 @@ Time taken: 0.01 seconds
1793
1944
 
1794
1945
  **Solved puzzle**
1795
1946
 
1796
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/map_solved.png" alt="Map solved" width="500">
1947
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/map_solved.png" alt="Map solved" width="500">
1797
1948
 
1798
1949
  ---
1799
1950
 
@@ -1822,7 +1973,7 @@ A white circle indicates that the square is a straight edge, but at least one of
1822
1973
 
1823
1974
  **Unsolved puzzle**
1824
1975
 
1825
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/pearl_unsolved.png" alt="Pearl unsolved" width="500">
1976
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/pearl_unsolved.png" alt="Pearl unsolved" width="500">
1826
1977
 
1827
1978
  Code to utilize this package and solve the puzzle:
1828
1979
  ```python
@@ -1844,22 +1995,33 @@ solutions = binst.solve_and_print()
1844
1995
  **Script Output**
1845
1996
  ```python
1846
1997
  Solution found
1847
- [['┏━' '━━' '━━' '━━' '━┒' '┏━' '━━' '━┒' '┏━' '━━' '━━' '━┒']
1848
- ['┃ ' '┏━' '━━' '━┒' '┗━' '━┛' '┏━' '━┛' '┃ ' '┏━' '━┒' '┃ ']
1849
- ['┗━' '━┛' ' ' '┃ ' '┏━' '━┒' '┗━' '━━' '━┛' '┃ ' '┃ ' '┃ ']
1850
- [' ' '┏━' '━━' '━┛' '┃ ' '┃ ' ' ' '┏━' '━━' '━┛' '┃ ' '┃ ']
1851
- [' ' '┃ ' '┏━' '━━' '━┛' '┗━' '━┒' '┃ ' '┏━' '━┒' '┗━' '━┛']
1852
- ['┏━' '━┛' '┃ ' ' ' '┏━' '━┒' '┃ ' '┃ ' '┃ ' '┗━' '━━' '━┒']
1853
- ['┃ ' ' ' '┗━' '━━' '━┛' '┃ ' '┃ ' '┗━' '━┛' ' ' ' ' '┃ ']
1854
- ['┗━' '━━' '━━' '━━' '━━' '━┛' '┗━' '━━' '━━' '━━' '━━' '━┛']]
1998
+ 0 0 0 0 0 0 0 0 0 0 1 1
1999
+ 0 1 2 3 4 5 6 7 8 9 0 1
2000
+
2001
+ 0 B───────────W───┐ ┌───W───┐ B───────────B
2002
+ │ │ │ │ │ │
2003
+ 1 │ ┌───────B └───┘ ┌───┘ │ ┌───┐ │
2004
+ │ │ │ │ │ │ │ │
2005
+ 2 └───┘ . │ ┌───┐ └───────B │ │ │
2006
+ │ │ │ │ │ │
2007
+ 3 . B───────B │ W . B───────B W │
2008
+ │ │ │ │ │ │
2009
+ 4 . │ B───────B └───┐ │ ┌───┐ └───┘
2010
+ │ │ │ │ │ │
2011
+ 5 ┌───┘ │ . ┌───┐ │ W W └───────B
2012
+ │ │ │ │ │ │ │ │
2013
+ 6 │ . B───────┘ │ │ └───┘ . . │
2014
+ │ │ │ │
2015
+ 7 B───────────────────B B───────────────────B
2016
+
1855
2017
  Solutions found: 1
1856
2018
  status: OPTIMAL
1857
- Time taken: 0.98 seconds
2019
+ Time taken: 0.12 seconds
1858
2020
  ```
1859
2021
 
1860
2022
  **Solved puzzle**
1861
2023
 
1862
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/pearl_solved.png" alt="Pearl solved" width="500">
2024
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/pearl_solved.png" alt="Pearl solved" width="500">
1863
2025
 
1864
2026
  ---
1865
2027
 
@@ -1888,7 +2050,7 @@ There are some configurable alternative modes, which involve changing the parall
1888
2050
 
1889
2051
  **Unsolved puzzle**
1890
2052
 
1891
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/bridges_unsolved.png" alt="Bridges unsolved" width="500">
2053
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/bridges_unsolved.png" alt="Bridges unsolved" width="500">
1892
2054
 
1893
2055
  Code to utilize this package and solve the puzzle:
1894
2056
  ```python
@@ -1956,7 +2118,7 @@ Time taken: 0.01 seconds
1956
2118
 
1957
2119
  **Solved puzzle**
1958
2120
 
1959
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/bridges_solved.png" alt="Bridges solved" width="500">
2121
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/bridges_solved.png" alt="Bridges solved" width="500">
1960
2122
 
1961
2123
  ---
1962
2124
 
@@ -1992,7 +2154,7 @@ Running into a mine is fatal. Even if you picked up the last gem in the same mov
1992
2154
 
1993
2155
  **Unsolved puzzle**
1994
2156
 
1995
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/inertia_unsolved.png" alt="Inertia unsolved" width="500">
2157
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/inertia_unsolved.png" alt="Inertia unsolved" width="500">
1996
2158
 
1997
2159
  Code to utilize this package and solve the puzzle:
1998
2160
 
@@ -2045,7 +2207,7 @@ Time taken: 13.92 seconds
2045
2207
 
2046
2208
  This picture won't mean much as the game is about the sequence of moves not the final frame as shown here.
2047
2209
 
2048
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/inertia_solved.png" alt="Inertia solved" width="500">
2210
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/inertia_solved.png" alt="Inertia solved" width="500">
2049
2211
 
2050
2212
  ---
2051
2213
 
@@ -2136,7 +2298,7 @@ Below is an example of how to utilize the solver while in the middle of a puzzle
2136
2298
 
2137
2299
  Let's say we start and made two guesses to end up with the following puzzle:
2138
2300
 
2139
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/guess_1.png" alt="Guess Pre Move" width="500">
2301
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/guess_1.png" alt="Guess Pre Move" width="500">
2140
2302
 
2141
2303
  Code to utilize this package and solve the puzzle:
2142
2304
 
@@ -2163,7 +2325,7 @@ max entropy guess is: ['P', 'Y', 'Y', 'G'] with entropy 3.4511
2163
2325
 
2164
2326
  So we make our next guess as (Purple, Yellow, Yellow, Green) and let's say we get this result: (2 black, 1 white, 1 grey)
2165
2327
 
2166
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/guess_2.png" alt="Guess Post 1 Move" width="500">
2328
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/guess_2.png" alt="Guess Post 1 Move" width="500">
2167
2329
 
2168
2330
  So we input that again to the solver to retreive the next optimal guess:
2169
2331
 
@@ -2187,7 +2349,7 @@ So we make our fourth guess as (Green, Yellow, Yellow, Orange)
2187
2349
 
2188
2350
  When we input the guess, we see that we correctly solve the puzzle!
2189
2351
 
2190
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/guess_3.png" alt="Guess Post 2 Moves" width="500">
2352
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/guess_3.png" alt="Guess Post 2 Moves" width="500">
2191
2353
 
2192
2354
  Note that in this case, the correct guess was among multiple possible guesses
2193
2355
 
@@ -2215,7 +2377,7 @@ You are given a chess board with $N$ pieces distributed on it. Your aim is to ma
2215
2377
 
2216
2378
  **Unsolved puzzle**
2217
2379
 
2218
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_unsolved.png" alt="Chess range unsolved" width="500">
2380
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/chess_range_unsolved.png" alt="Chess range unsolved" width="500">
2219
2381
 
2220
2382
  Code to utilize this package and solve the puzzle:
2221
2383
 
@@ -2242,7 +2404,7 @@ Time taken: 1.16 seconds
2242
2404
 
2243
2405
  **Solved puzzle**
2244
2406
 
2245
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_range_solved.png" alt="Chess range solved" width="500">
2407
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/chess_range_solved.png" alt="Chess range solved" width="500">
2246
2408
 
2247
2409
  ---
2248
2410
 
@@ -2267,7 +2429,7 @@ You are given a chess board with $N$ pieces distributed on it. Your aim is to ma
2267
2429
 
2268
2430
  **Unsolved puzzle**
2269
2431
 
2270
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_solo_unsolved.png" alt="Chess solo unsolved" width="500">
2432
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/chess_solo_unsolved.png" alt="Chess solo unsolved" width="500">
2271
2433
 
2272
2434
  Code to utilize this package and solve the puzzle:
2273
2435
 
@@ -2294,7 +2456,7 @@ Time taken: 0.47 seconds
2294
2456
 
2295
2457
  **Solved puzzle**
2296
2458
 
2297
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_solo_solved.png" alt="Chess solo solved" width="500">
2459
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/chess_solo_solved.png" alt="Chess solo solved" width="500">
2298
2460
 
2299
2461
  ---
2300
2462
 
@@ -2318,7 +2480,7 @@ You are given a chess board with $N$ pieces distributed on it (equal white and b
2318
2480
 
2319
2481
  **Unsolved puzzle**
2320
2482
 
2321
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_melee_unsolved.png" alt="Chess melee unsolved" width="500">
2483
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/chess_melee_unsolved.png" alt="Chess melee unsolved" width="500">
2322
2484
 
2323
2485
  Code to utilize this package and solve the puzzle:
2324
2486
 
@@ -2346,7 +2508,7 @@ Time taken: 6.24 seconds
2346
2508
 
2347
2509
  **Solved puzzle**
2348
2510
 
2349
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/chess_melee_solved.png" alt="Chess melee solved" width="500">
2511
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/chess_melee_solved.png" alt="Chess melee solved" width="500">
2350
2512
 
2351
2513
  ---
2352
2514
 
@@ -2367,7 +2529,7 @@ The numbers outside the grid show the number of filled cells horizontally and ve
2367
2529
 
2368
2530
  **Unsolved puzzle**
2369
2531
 
2370
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/thermometers_unsolved.png" alt="Thermometers unsolved" width="500">
2532
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/thermometers_unsolved.png" alt="Thermometers unsolved" width="500">
2371
2533
 
2372
2534
  Code to utilize this package and solve the puzzle:
2373
2535
 
@@ -2422,7 +2584,7 @@ Time taken: 0.01 seconds
2422
2584
 
2423
2585
  **Solved puzzle**
2424
2586
 
2425
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/thermometers_solved.png" alt="Thermometers solved" width="500">
2587
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/thermometers_solved.png" alt="Thermometers solved" width="500">
2426
2588
 
2427
2589
  ---
2428
2590
 
@@ -2447,7 +2609,7 @@ The numbers outside the grid show the number of filled cells horizontally and ve
2447
2609
 
2448
2610
  **Unsolved puzzle**
2449
2611
 
2450
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/aquarium_unsolved.png" alt="Aquarium unsolved" width="500">
2612
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/aquarium_unsolved.png" alt="Aquarium unsolved" width="500">
2451
2613
 
2452
2614
  Code to utilize this package and solve the puzzle:
2453
2615
 
@@ -2480,21 +2642,39 @@ solutions = binst.solve_and_print()
2480
2642
 
2481
2643
  ```python
2482
2644
  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']]
2645
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
2646
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
2647
+ ┌───────────────┬───────────┬───────────────┬───┬───────────┐
2648
+ 0│ │ │ │ │ O O O
2649
+ │ ┌───────────┘ ┌───┬───┴───┐ ┌───┐ │ └───┐ ┌───┤
2650
+ 1│ │ │ │ │ O │ │ O O O O │ │
2651
+ │ └───┐ ┌───┬───┘ └───┬───┴───┤ ├───┴───────┼───┘ │
2652
+ 2│ │ │ │ │ │ O │ │ │
2653
+ │ ┌───┴───┘ ├───┐ │ ├───┴───┐ ┌───┘ │
2654
+ 3│ │ │ │ O O │ │ │ │ │
2655
+ │ └───┐ │ ├───────┘ ┌───┴───┐ │ └───┬───┐ │
2656
+ 4│ O O │ │ │ │ O O │ │ │ │ O
2657
+ ├───┬───┘ ┌───┘ │ ┌───────┴───┬───┘ │ │ ├───┤
2658
+ 5│ │ │ │ │ O O O │ │ │ │ │
2659
+ │ │ │ │ └───┬───┬───┘ ┌───┤ │ │ │
2660
+ 6│ O │ O O │ │ O O │ │ O O │ │ O O │ │ O │
2661
+ ├───┴───┐ ├───────┴───┬───┘ ├───┬───┘ └───┐ │ │ │
2662
+ 7│ O O │ O │ │ O O │ │ O O O │ O │ │ O │
2663
+ │ ┌───┼───┴───────┐ │ ┌───┴───┼───────────┼───┤ └───┤
2664
+ 8│ O │ │ │ │ O │ O O │ │ O │ │
2665
+ ├───┘ └───┐ ┌───┘ ├───┼───────┘ ┌───────┤ │ ┌───┤
2666
+ 9│ │ │ O O │ │ │ │ O │ │ │
2667
+ │ ┌───┘ ├───────┤ └───┐ ├───────┤ └───┤ │
2668
+ 10│ │ O O │ │ │ O O │ │ O O │ O │
2669
+ │ ├───┬───┘ ┌───┘ └───┬───┴───────┤ ┌───┴───┤
2670
+ 11│ │ │ │ │ │ O │ O O │
2671
+ ├───┐ │ └───────┴───────┐ │ ┌───────┼───┴───┬───┤
2672
+ 12│ │ O │ │ O O │ │ O O │ O O │ │
2673
+ │ └───┴───┬───────┐ ┌───┘ ├───┴───────┴───────┘ │
2674
+ 13│ O O O │ O O │ │ O O O │ │
2675
+ │ └───┬───┘ ├───────┬───┴───┐ ┌───────┤
2676
+ 14│ O O O O │ O O │ O O │ O O │ │ O O │
2677
+ └───────────────┴───────┴───────┴───────┴───────────┴───────┘
2498
2678
  Solutions found: 1
2499
2679
  status: OPTIMAL
2500
2680
  Time taken: 0.02 seconds
@@ -2502,7 +2682,7 @@ Time taken: 0.02 seconds
2502
2682
 
2503
2683
  **Solved puzzle**
2504
2684
 
2505
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/aquarium_solved.png" alt="Aquarium solved" width="500">
2685
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/aquarium_solved.png" alt="Aquarium solved" width="500">
2506
2686
 
2507
2687
  ---
2508
2688
 
@@ -2525,7 +2705,7 @@ Time taken: 0.02 seconds
2525
2705
 
2526
2706
  **Unsolved puzzle**
2527
2707
 
2528
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/stitches_unsolved.png" alt="Stitches unsolved" width="500">
2708
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/stitches_unsolved.png" alt="Stitches unsolved" width="500">
2529
2709
 
2530
2710
  Code to utilize this package and solve the puzzle:
2531
2711
 
@@ -2561,21 +2741,39 @@ Note: `solver.Board` accepts an optional `connection_count=N` parameter to speci
2561
2741
 
2562
2742
  ```python
2563
2743
  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' ' ' ' ' ' ' ' ']]
2744
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
2745
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
2746
+ ┌───────────────────┬───────────────────────────────┬───────┐
2747
+ 0│ . . . . . . . . . . . . . . .
2748
+ │ ┌───────┬───┐ └───┐ ┌───────────────────┐ └───┐ │
2749
+ 1│ O─┼─O O O─┼─O O─┼─O . . . . . O O─┼─O
2750
+ │ │ ┌─┼─┘ └───┐ ├───┘ └─┼─────┤ │
2751
+ 2│ . . O . . O─┼─O . . . . . O O─┼─O
2752
+ │ │ │ └───┤ ┌───┐ ┌───────────────┘ │
2753
+ 3│ O . . . . O─┼─O . . O . . . . .
2754
+ ├─┼─┤ └───────────┐ ├───────┘ └─┼─┴───────────┐ │
2755
+ 4│ O . . . . O─┼─O . . O . . . . .
2756
+ │ └───────┐ │ └───┐ ┌───────────┐ ┌───┘ │
2757
+ 5│ . . . . . . . . . . . . . O .
2758
+ │ ┌───┘ │ ├───┘ │ └─────┼─┐ │
2759
+ 6│ . . │ O . . │ . O─┼─O . O . │ . . O │ . │
2760
+ │ └─┼─────────┼───────┘ ┌─────┼─┐ │ ┌───┐ │ │
2761
+ 7│ . O O . O─┼─O . . │ . O │ . │ O─┼─O │ O │ . │
2762
+ ├─────┼─┐ ┌───┴───────────┘ │ └───┘ ├─┼─┤ │
2763
+ 8│ . O │ . . │ . . . . . . │ . . . │ O │ . │
2764
+ │ │ ┌───┘ └───┐ │ │ │
2765
+ 9│ . . │ O─┼─O . . . . . . O │ . O─┼─O │ O │
2766
+ │ ┌───┴───┘ ┌───────────┬───┐ ┌─┼─┴───────┘ └─┼─┤
2767
+ 10│ . │ . O . │ . . O─┼─O │ . . │ O . . . O │
2768
+ │ └─────┼─┐ │ │ │ ┌───┘ ┌───────┐ │
2769
+ 11│ O O O │ O─┼─O O O │ O─┼─O │ . . . │ . O─┼─O │
2770
+ ├─┼─┬─┼─┐ ├───┘ ┌─┼─┬─┼─┤ └───┤ ┌───────┘ │ │
2771
+ 12│ O │ O │ . │ . . │ O │ O │ . . │ . │ . . . . │ . │
2772
+ │ │ │ │ ┌───┘ │ └───┐ └───┘ │ │
2773
+ 13│ . │ . │ O─┼─O │ . . │ . . │ . . O . . . │ . │
2774
+ │ │ └───┤ │ │ └─────────┼─┐ └───┤
2775
+ 14│ O─┼─O O─┼─O │ . O─┼─O . . . O │ . . . . │
2776
+ └───┴───────┴───┴───────┴───────────────────┴───────────────┘
2579
2777
  Solutions found: 1
2580
2778
  status: OPTIMAL
2581
2779
  Time taken: 0.01 seconds
@@ -2583,7 +2781,7 @@ Time taken: 0.01 seconds
2583
2781
 
2584
2782
  **Solved puzzle**
2585
2783
 
2586
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/stitches_solved.png" alt="Stitches solved" width="500">
2784
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/stitches_solved.png" alt="Stitches solved" width="500">
2587
2785
 
2588
2786
  ---
2589
2787
 
@@ -2606,7 +2804,7 @@ Time taken: 0.01 seconds
2606
2804
 
2607
2805
  **Unsolved puzzle**
2608
2806
 
2609
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/battleships_unsolved.png" alt="Battleships unsolved" width="500">
2807
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/battleships_unsolved.png" alt="Battleships unsolved" width="500">
2610
2808
 
2611
2809
  Code to utilize this package and solve the puzzle:
2612
2810
 
@@ -2642,29 +2840,48 @@ solutions = binst.solve_and_print()
2642
2840
 
2643
2841
  ```python
2644
2842
  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']]
2843
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
2844
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
2845
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
2846
+ 0│ │ │ │ │ │▒▒▒│ │ │ │ │ │ │ │ │ │
2847
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2848
+ 1│ │ │ │ │ │ │ │ │ │ │▒▒▒│ │▒▒▒│ │ │
2849
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2850
+ 2│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒│ │ │
2851
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2852
+ 3│ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒│ │ │
2853
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2854
+ 4│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
2855
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2856
+ 5│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│ │
2857
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2858
+ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
2859
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2860
+ 7│ │ │▒▒▒│ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │▒▒▒│▒▒▒│▒▒▒│
2861
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2862
+ 8│▒▒▒│ │▒▒▒│ │ │ │ │ │ │ │ │ │ │ │ │
2863
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2864
+ 9│ │ │ │ │ │ │ │ │▒▒▒│ │ │▒▒▒│ │ │ │
2865
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2866
+ 10│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │ │ │▒▒▒│ │ │ │ │ │ │
2867
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2868
+ 11│ │ │ │ │ │ │ │ │ │ │▒▒▒│ │ │ │ │
2869
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2870
+ 12│ │ │ │ │ │ │ │▒▒▒│▒▒▒│ │▒▒▒│ │ │ │ │
2871
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2872
+ 13│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
2873
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2874
+ 14│ │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒│
2875
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
2660
2876
  Solutions found: 1
2661
2877
  status: OPTIMAL
2662
- Time taken: 0.12 seconds
2878
+ Time taken: 0.09 seconds
2879
+ Solution found
2663
2880
  ```
2664
2881
 
2665
2882
  **Solved puzzle**
2666
2883
 
2667
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/battleships_solved.png" alt="Battleships solved" width="500">
2884
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/battleships_solved.png" alt="Battleships solved" width="500">
2668
2885
 
2669
2886
  ---
2670
2887
 
@@ -2689,7 +2906,7 @@ The goal is to make some of the cells black in such a way that:
2689
2906
 
2690
2907
  **Unsolved puzzle**
2691
2908
 
2692
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/kakurasu_unsolved.png" alt="Kakurasu unsolved" width="500">
2909
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/kakurasu_unsolved.png" alt="Kakurasu unsolved" width="500">
2693
2910
 
2694
2911
  Code to utilize this package and solve the puzzle:
2695
2912
 
@@ -2707,18 +2924,33 @@ solutions = binst.solve_and_print()
2707
2924
 
2708
2925
  ```python
2709
2926
  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']]
2927
+ 0 0 0 0 0 0 0 0 0 0 1 1
2928
+ 0 1 2 3 4 5 6 7 8 9 0 1
2929
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
2930
+ 0│▒▒▒│▒▒▒│ │▒▒▒│ │ │ │▒▒▒│ │ │ │▒▒▒│
2931
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2932
+ 1│ │ │ │ │ │▒▒▒│ │ │ │ │ │ │
2933
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2934
+ 2│▒▒▒│ │ │ │ │ │ │ │ │ │ │ │
2935
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2936
+ 3│ │ │ │ │▒▒▒│ │▒▒▒│ │ │ │ │ │
2937
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2938
+ 4│ │ │▒▒▒│▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ │▒▒▒│
2939
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2940
+ 5│▒▒▒│ │ │ │▒▒▒│ │ │▒▒▒│ │ │▒▒▒│▒▒▒│
2941
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2942
+ 6│ │ │ │ │ │ │ │ │ │ │▒▒▒│ │
2943
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2944
+ 7│ │ │ │▒▒▒│ │ │ │ │ │ │ │ │
2945
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2946
+ 8│ │ │▒▒▒│ │ │▒▒▒│ │ │▒▒▒│ │▒▒▒│ │
2947
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2948
+ 9│ │ │ │▒▒▒│ │ │▒▒▒│ │ │ │ │▒▒▒│
2949
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2950
+ 10│ │ │▒▒▒│ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│
2951
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
2952
+ 11│▒▒▒│ │ │▒▒▒│ │ │ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│
2953
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
2722
2954
  Solutions found: 1
2723
2955
  status: OPTIMAL
2724
2956
  Time taken: 0.00 seconds
@@ -2726,7 +2958,7 @@ Time taken: 0.00 seconds
2726
2958
 
2727
2959
  **Solved puzzle**
2728
2960
 
2729
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/kakurasu_solved.png" alt="Kakurasu solved" width="500">
2961
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/kakurasu_solved.png" alt="Kakurasu solved" width="500">
2730
2962
 
2731
2963
  ---
2732
2964
 
@@ -2748,7 +2980,7 @@ Time taken: 0.00 seconds
2748
2980
 
2749
2981
  **Unsolved puzzle**
2750
2982
 
2751
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/star_battle_unsolved.png" alt="Star Battle unsolved" width="500">
2983
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/star_battle_unsolved.png" alt="Star Battle unsolved" width="500">
2752
2984
 
2753
2985
  Code to utilize this package and solve the puzzle:
2754
2986
 
@@ -2853,7 +3085,7 @@ Time taken: 0.39 seconds
2853
3085
 
2854
3086
  **Solved puzzle**
2855
3087
 
2856
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/star_battle_solved.png" alt="Star Battle solved" width="500">
3088
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/star_battle_solved.png" alt="Star Battle solved" width="500">
2857
3089
 
2858
3090
  ---
2859
3091
 
@@ -2876,7 +3108,7 @@ Time taken: 0.39 seconds
2876
3108
 
2877
3109
  **Unsolved puzzle**
2878
3110
 
2879
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/star_battle_shapeless_unsolved.png" alt="Star Battle Shapeless unsolved" width="500">
3111
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/star_battle_shapeless_unsolved.png" alt="Star Battle Shapeless unsolved" width="500">
2880
3112
 
2881
3113
  Code to utilize this package and solve the puzzle:
2882
3114
 
@@ -2936,7 +3168,7 @@ Time taken: 0.02 seconds
2936
3168
 
2937
3169
  **Solved puzzle**
2938
3170
 
2939
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/star_battle_shapeless_solved.png" alt="Star Battle Shapeless solved" width="500">
3171
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/star_battle_shapeless_solved.png" alt="Star Battle Shapeless solved" width="500">
2940
3172
 
2941
3173
  ---
2942
3174
 
@@ -2962,7 +3194,7 @@ Note: The solver is capable of solving variations where the puzzle pieces the ma
2962
3194
 
2963
3195
  **Unsolved puzzle**
2964
3196
 
2965
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/lits_unsolved.png" alt="Lits unsolved" width="500">
3197
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/lits_unsolved.png" alt="Lits unsolved" width="500">
2966
3198
 
2967
3199
  Code to utilize this package and solve the puzzle:
2968
3200
 
@@ -3049,7 +3281,7 @@ Time taken: 0.09 seconds
3049
3281
 
3050
3282
  **Solved puzzle**
3051
3283
 
3052
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/lits_solved.png" alt="Lits solved" width="500">
3284
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/lits_solved.png" alt="Lits solved" width="500">
3053
3285
 
3054
3286
  ---
3055
3287
 
@@ -3113,7 +3345,7 @@ Note: This puzzle is one of the very rare puzzles where CP-SAT is not a good fit
3113
3345
 
3114
3346
  **Unsolved puzzle**
3115
3347
 
3116
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/black_box_unsolved.png" alt="Black Box unsolved" width="500">
3348
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/black_box_unsolved.png" alt="Black Box unsolved" width="500">
3117
3349
 
3118
3350
  Code to utilize this package and solve the puzzle:
3119
3351
  ```python
@@ -3133,31 +3365,53 @@ As the instructions say, the solution to this puzzle is not garunteed to be uniq
3133
3365
 
3134
3366
  ```python
3135
3367
  Solution found
3136
- [[' ' ' ' ' ' ' ' 'O' ' ' ' ' ' ']
3137
- [' ' ' ' ' ' ' ' ' ' 'O' ' ' ' ']
3138
- [' ' 'O' ' ' ' ' ' ' ' ' ' ' ' ']
3139
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3140
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3141
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3142
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3143
- [' ' ' ' 'O' ' ' 'O' ' ' ' ' ' ']]
3368
+
3369
+ 0 1 2 3 4 5 6 7
3370
+ ┌───┬───┬───┬───┬───┬───┬───┬───┐
3371
+ 0│ │ │ │ │ O │ │ │ │
3372
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3373
+ 1│ │ │ │ │ │ O │ │ │
3374
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3375
+ 2│ │ O │ │ │ │ │ │ │
3376
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3377
+ 3│ │ │ │ │ │ │ │ │
3378
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3379
+ 4│ │ │ │ │ │ │ │ │
3380
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3381
+ 5│ │ │ │ │ │ │ │ │
3382
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3383
+ 6│ │ │ │ │ │ │ │ │
3384
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3385
+ 7│ │ │ O │ │ O │ │ │ │
3386
+ └───┴───┴───┴───┴───┴───┴───┴───┘
3144
3387
  Solution found
3145
- [[' ' ' ' ' ' ' ' 'O' ' ' ' ' ' ']
3146
- [' ' ' ' ' ' ' ' ' ' 'O' ' ' ' ']
3147
- [' ' 'O' ' ' 'O' ' ' ' ' ' ' ' ']
3148
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3149
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3150
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3151
- [' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ']
3152
- [' ' ' ' 'O' ' ' 'O' ' ' ' ' ' ']]
3388
+
3389
+ 0 1 2 3 4 5 6 7
3390
+ ┌───┬───┬───┬───┬───┬───┬───┬───┐
3391
+ 0│ │ │ │ │ O │ │ │ │
3392
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3393
+ 1│ │ │ │ │ │ O │ │ │
3394
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3395
+ 2│ │ O │ │ O │ │ │ │ │
3396
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3397
+ 3│ │ │ │ │ │ │ │ │
3398
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3399
+ 4│ │ │ │ │ │ │ │ │
3400
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3401
+ 5│ │ │ │ │ │ │ │ │
3402
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3403
+ 6│ │ │ │ │ │ │ │ │
3404
+ ├───┼───┼───┼───┼───┼───┼───┼───┤
3405
+ 7│ │ │ O │ │ O │ │ │ │
3406
+ └───┴───┴───┴───┴───┴───┴───┴───┘
3153
3407
  Solutions found: 2
3154
3408
  status: OPTIMAL
3155
- Time taken: 30.33 seconds
3409
+ Time taken: 24.53 seconds
3156
3410
  ```
3157
3411
 
3158
3412
  **Solved puzzle**
3159
3413
 
3160
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/black_box_solved.png" alt="Black Box solved" width="500">
3414
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/black_box_solved.png" alt="Black Box solved" width="500">
3161
3415
 
3162
3416
  ---
3163
3417
 
@@ -3180,7 +3434,7 @@ To enter your solution, you draw lines along the grid edges to mark the boundari
3180
3434
 
3181
3435
  **Unsolved puzzle**
3182
3436
 
3183
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/galaxies_unsolved.png" alt="Galaxies unsolved" width="500">
3437
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/galaxies_unsolved.png" alt="Galaxies unsolved" width="500">
3184
3438
 
3185
3439
  Code to utilize this package and solve the puzzle:
3186
3440
 
@@ -3257,7 +3511,7 @@ Time taken: 0.06 seconds
3257
3511
 
3258
3512
  Applying the solution to the puzzle visually:
3259
3513
 
3260
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/galaxies_solved.png" alt="Galaxies solved" width="500">
3514
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/galaxies_solved.png" alt="Galaxies solved" width="500">
3261
3515
 
3262
3516
  ---
3263
3517
 
@@ -3281,7 +3535,7 @@ You have a grid of squares. Your aim is to draw a diagonal line through each squ
3281
3535
 
3282
3536
  **Unsolved puzzle**
3283
3537
 
3284
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/slant_unsolved.png" alt="Slant unsolved" width="500">
3538
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/slant_unsolved.png" alt="Slant unsolved" width="500">
3285
3539
 
3286
3540
  Code to utilize this package and solve the puzzle:
3287
3541
 
@@ -3310,18 +3564,29 @@ solutions = binst.solve_and_print()
3310
3564
 
3311
3565
  ```python
3312
3566
  Solution found
3313
- [
3314
- [ / \ \ / / / / \ \ \ / \ ]
3315
- [ \ \ \ \ \ \ / \ / / \ \ ]
3316
- [ \ \ \ / / \ / \ \ \ \ / ]
3317
- [ \ / \ \ / \ / / \ / \ / ]
3318
- [ / \ \ / \ \ \ / / / \ \ ]
3319
- [ / \ \ / \ \ \ / \ / \ \ ]
3320
- [ / \ \ / \ / / / \ / / \ ]
3321
- [ \ \ \ \ \ / / / \ / \ \ ]
3322
- [ / / / \ \ / / \ \ / \ \ ]
3323
- [ \ \ / / / \ / \ / \ \ / ]
3324
- ]
3567
+ 0 0 0 0 0 0 0 0 0 0 1 1
3568
+ 0 1 2 3 4 5 6 7 8 9 0 1
3569
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
3570
+ 0│ / │ \ \ / / / / │ \ \ \ / │ \ │
3571
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3572
+ 1│ \ \ \ \ \ │ \ │ / │ \ │ / / \ \
3573
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3574
+ 2│ \ \ \ / / \ / \ │ \ │ \ │ \ │ / │
3575
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3576
+ 3│ \ / \ \ / \ / │ / │ \ │ / │ \ │ / │
3577
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3578
+ 4│ / │ \ │ \ │ / │ \ │ \ │ \ │ / │ / │ / │ \ │ \ │
3579
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3580
+ 5│ / │ \ │ \ │ / │ \ │ \ │ \ │ / │ \ │ / │ \ │ \ │
3581
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3582
+ 6│ / │ \ │ \ │ / │ \ │ / │ / │ / │ \ │ / │ / │ \ │
3583
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3584
+ 7│ \ │ \ │ \ │ \ │ \ │ / │ / │ / │ \ │ / │ \ │ \ │
3585
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3586
+ 8│ / │ / │ / │ \ │ \ │ / │ / │ \ │ \ │ / │ \ │ \ │
3587
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3588
+ 9│ \ │ \ │ / │ / │ / │ \ │ / │ \ │ / │ \ │ \ │ / │
3589
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
3325
3590
  Solutions found: 1
3326
3591
  status: OPTIMAL
3327
3592
  Time taken: 0.06 seconds
@@ -3331,13 +3596,13 @@ Time taken: 0.06 seconds
3331
3596
 
3332
3597
  Applying the solution to the puzzle visually:
3333
3598
 
3334
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/slant_solved.png" alt="Slant solved" width="500">
3599
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/slant_solved.png" alt="Slant solved" width="500">
3335
3600
 
3336
3601
  ---
3337
3602
 
3338
3603
  ## Unequal (Puzzle Type #37)
3339
3604
 
3340
- Also called "Futoshiki" or Renzoku"
3605
+ Also called "Futoshiki", the "Adjacent" variant is also known as "Renzoku" or "Neighbours".
3341
3606
 
3342
3607
  * [**Play online 1**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/unequal.html)
3343
3608
 
@@ -3370,7 +3635,7 @@ In 'Trivial' difficulty level (available via the 'Custom' game type selector), t
3370
3635
 
3371
3636
  **Unsolved puzzle**
3372
3637
 
3373
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/unequal_unsolved.png" alt="Unequal unsolved" width="500">
3638
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/unequal_unsolved.png" alt="Unequal unsolved" width="500">
3374
3639
 
3375
3640
  Code to utilize this package and solve the puzzle:
3376
3641
 
@@ -3428,7 +3693,7 @@ Time taken: 0.05 seconds
3428
3693
 
3429
3694
  Applying the solution to the puzzle visually:
3430
3695
 
3431
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/unequal_solved.png" alt="Unequal solved" width="500">
3696
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/unequal_solved.png" alt="Unequal solved" width="500">
3432
3697
 
3433
3698
  ---
3434
3699
 
@@ -3452,7 +3717,7 @@ You have to shade some of the cells in such a way that:
3452
3717
 
3453
3718
  **Unsolved puzzle**
3454
3719
 
3455
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/norinori_unsolved.png" alt="Norinori unsolved" width="500">
3720
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/norinori_unsolved.png" alt="Norinori unsolved" width="500">
3456
3721
 
3457
3722
  Code to utilize this package and solve the puzzle:
3458
3723
 
@@ -3491,56 +3756,56 @@ Solution found
3491
3756
  0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
3492
3757
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
3493
3758
  ┌───┬───────────────┬───┬───────┬───────────┬───────────┬───┬───┬───────┬───────┐
3494
- 0│ X │ │ X │ X │ X │ X │ X │ X │ X X │
3759
+ 0│▒▒▒│ │▒▒▒│ ▒▒▒│ ▒▒▒ │▒▒▒ │▒▒▒│ │▒▒▒ │▒▒▒ ▒▒▒│
3495
3760
  │ └───┐ │ │ ┌───┘ ┌───┬───┴───┐ ┌───┘ │ │ ├───────┤
3496
- 1│ X │ X │ X │ │ X │ X │ X │ X │ X │
3761
+ 1│▒▒▒ │▒▒▒ │▒▒▒│ │▒▒▒ │▒▒▒│ ▒▒▒│ ▒▒▒│ │▒▒▒ │ │
3497
3762
  ├───────┴───┐ ├───┘ ├───────┘ │ ┌───┤ ├───┬───┘ └───┬───┘ │
3498
- 2│ X │ X │ X │ X │ X │ │ X │ X │ X │
3763
+ 2│ ▒▒▒│ ▒▒▒│ ▒▒▒│ ▒▒▒ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒
3499
3764
  │ ┌───┐ ├───────┴───┬───┴───────┬───┴───┤ └───┘ │ └───────┐ │
3500
- 3│ X │ X │X │ X X │ X │ X │ X │
3765
+ 3│▒▒▒│▒▒▒│ ▒▒▒ │▒▒▒ ▒▒▒│ ▒▒▒│ ▒▒▒ │▒▒▒│
3501
3766
  │ │ └───┤ ┌───────┤ │ └───┐ ┌───┤ ┌───────────┴───┤
3502
- 4│ │ X │ X │ │ │ X │ X │ X │ X X │
3767
+ 4│ │ ▒▒▒│▒▒▒│ │ │ ▒▒▒│▒▒▒│ ▒▒▒│▒▒▒ ▒▒▒│
3503
3768
  │ ├───────┴───┘ │ ┌───────┴───────┐ │ │ └───┐ │ ┌───────┐ │
3504
- 5│ │ X X │ X X │ │ X X │ │ X X
3769
+ 5│ │▒▒▒ ▒▒▒ │▒▒▒ ▒▒▒ │ │ │▒▒▒ ▒▒▒││▒▒▒ ▒▒▒│
3505
3770
  ├───┴───┬───────────────┼───┼───────────┬───┴───┼───┘ ┌───┴───┼───┴───┬───┴───┤
3506
- 6│ X │ X │ X │ X │ X │ X X │ X │
3771
+ 6│ ▒▒▒│ ▒▒▒ │▒▒▒│ ▒▒▒│ ▒▒▒│ ▒▒▒│▒▒▒ ▒▒▒│
3507
3772
  │ │ ┌───┬───────┤ │ ┌───┤ ┌───┴───┬───┴───┐ ├───┐ │ │
3508
- 7│ X │ X │ X │ │ X │ │ X │ X │ X X │ │ X │ X │
3773
+ 7│▒▒▒ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒ │▒▒▒ ▒▒▒││▒▒▒│ ▒▒▒│
3509
3774
  ├───┬───┴───┘ │ ┌───┴───┘ │ │ └───┐ └───┬───┘ │ └───┤ ┌───┤
3510
- 8│ X │ │ X │ X │ │ │ │ X │ X │ │ │
3775
+ 8│▒▒▒│ │▒▒▒│ ▒▒▒│ │ │ │ ▒▒▒│ ▒▒▒│ │ │
3511
3776
  │ └───┐ ┌───┤ ├───┬───────────┘ │ ┌───┘ ├───┬───┘ └───┘ │
3512
- 9│ X │ X │ │ X │ X X │ X │ X │
3777
+ 9│ ▒▒▒│▒▒▒│ │▒▒▒│ ▒▒▒ │▒▒▒│▒▒▒ │▒▒▒
3513
3778
  ├───┐ ├───┘ ├───┘ ├───────┐ ┌───┤ │ ┌───────┤ └───────────┬───────┤
3514
- 10│ X │ │ │ X X │ X │ │ │ X X X │ X │
3779
+ 10│▒▒▒│ │ │ │▒▒▒ ▒▒▒│ │▒▒▒││▒▒▒ ▒▒▒│ ▒▒▒│▒▒▒
3515
3780
  │ └───┤ ┌───┴───┐ └───┬───┴───┘ ├───┴───┴───────┴───┐ ┌───────┴───┐ │
3516
- 11│ X │ X X │ X │ X │ X │
3781
+ 11│▒▒▒ │▒▒▒ ▒▒▒│ ▒▒▒│ ▒▒▒│ │▒▒▒ │ │
3517
3782
  ├───────┤ └───┬───┘ └───┬───────┴───┬───┐ ┌───┤ ├───────┐ │ │
3518
- 12│ X X │ X │ X │ X │ │ X │ │ X │ X │ X │
3783
+ 12│ ▒▒▒│▒▒▒ ▒▒▒│▒▒▒ │▒▒▒│ │▒▒▒│ │▒▒▒ │▒▒▒│▒▒▒│
3519
3784
  │ ┌───┘ ┌───┴───┐ ├───┐ │ ├───┐ │ │ └───┐ │ │ │
3520
- 13│ X │ X X X │ │ X │ X │ │ X │ │ X │ X │ │ │
3785
+ 13│▒▒▒│ │▒▒▒ ▒▒▒│ ▒▒▒ │▒▒▒ │▒▒▒│ │▒▒▒│ │▒▒▒ │▒▒▒│ │ │
3521
3786
  ├───┘ ├───┬───┴───────────┘ └───┬───┴───┘ └───┘ ├───────┴───┼───┴───┤
3522
- 14│ X │X X │ X │ X X
3787
+ 14│▒▒▒ │ │ ▒▒▒ ▒▒▒│ ▒▒▒ │▒▒▒ ▒▒▒│
3523
3788
  ├───┐ │ └───┬───────────┬───┐ └───┬───────────────┴───┬───────┘ │
3524
- 15│ │ X X │ X │ X │ │ X X │ X X │
3789
+ 15│ │ │▒▒▒ ▒▒▒│ ▒▒▒│▒▒▒│ │▒▒▒ ▒▒▒ │▒▒▒ ▒▒▒│
3525
3790
  │ ├───┬───┴───┬───┘ ┌───────┤ └───────┼───┐ ┌───┬───┴───────────────┤
3526
- 16│ │ X │ X X │ X │ X │ │ X │ X X │
3791
+ 16│ │▒▒▒│ ▒▒▒│▒▒▒ ▒▒▒ │▒▒▒│ │▒▒▒│ ▒▒▒ ▒▒▒│
3527
3792
  │ │ │ └───────┤ ┌───┴───────────┤ └───┬───┤ │ ┌───┬───────┐ │
3528
- 17│ X X X │ │ X X │ X │ X ││ │ X X
3793
+ 17│ │▒▒▒│ ▒▒▒ ▒▒▒ │▒▒▒ ▒▒▒ ▒▒▒│▒▒▒│ │ │ │▒▒▒ ▒▒▒│
3529
3794
  │ └───┴───┐ ┌───────┘ └───┬───┬───────┴───┐ │ │ └───┤ │ └───┤
3530
- 18│ X X │ X │ X X │ X │ X │
3795
+ 18│▒▒▒ ▒▒▒│ ▒▒▒│ ▒▒▒ ▒▒▒││▒▒▒ │▒▒▒│
3531
3796
  ├───────────┴───┴───┬───────┬───┘ └───────┬───┘ │ └───────┤ │ ┌───────┤
3532
- 19 X X │ X X X X │ X │ X │ X X │
3797
+ 19│▒▒▒ ▒▒▒ │▒▒▒ ▒▒▒│ ▒▒▒ ▒▒▒ │ │ ▒▒▒ │▒▒▒│ │▒▒▒ ▒▒▒│
3533
3798
  └───────────────────┴───────┴───────────────┴───────┴───────────┴───┴───┴───────┘
3534
3799
  Solutions found: 1
3535
3800
  status: OPTIMAL
3536
- Time taken: 0.04 seconds
3801
+ Time taken: 0.03 seconds
3537
3802
  ```
3538
3803
 
3539
3804
  **Solved puzzle**
3540
3805
 
3541
3806
  Applying the solution to the puzzle visually:
3542
3807
 
3543
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/norinori_solved.png" alt="Norinori solved" width="500">
3808
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/norinori_solved.png" alt="Norinori solved" width="500">
3544
3809
 
3545
3810
  ---
3546
3811
 
@@ -3567,7 +3832,7 @@ A line forming a single loop without crossings or branches means that every corn
3567
3832
 
3568
3833
  **Unsolved puzzle**
3569
3834
 
3570
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/slitherlink_unsolved.png" alt="Slitherlink unsolved" width="500">
3835
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/slitherlink_unsolved.png" alt="Slitherlink unsolved" width="500">
3571
3836
 
3572
3837
  Code to utilize this package and solve the puzzle:
3573
3838
 
@@ -3655,7 +3920,7 @@ Time taken: 2.39 seconds
3655
3920
 
3656
3921
  Applying the solution to the puzzle visually:
3657
3922
 
3658
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/slitherlink_solved.png" alt="Slitherlink solved" width="500">
3923
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/slitherlink_solved.png" alt="Slitherlink solved" width="500">
3659
3924
 
3660
3925
  ---
3661
3926
 
@@ -3677,7 +3942,7 @@ Yin-Yang is played on a rectangular grid with no standard size. Some cells start
3677
3942
 
3678
3943
  **Unsolved puzzle**
3679
3944
 
3680
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/yin_yang_unsolved.png" alt="Yin-Yang unsolved" width="500">
3945
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/yin_yang_unsolved.png" alt="Yin-Yang unsolved" width="500">
3681
3946
 
3682
3947
  Code to utilize this package and solve the puzzle:
3683
3948
 
@@ -3714,38 +3979,59 @@ solutions = binst.solve_and_print()
3714
3979
 
3715
3980
  ```python
3716
3981
  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
- ]
3982
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
3983
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
3984
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
3985
+ 0│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
3986
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3987
+ 1│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │
3988
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3989
+ 2│ │ │▒▒▒│ │▒▒▒│ │ │ │ │ │▒▒▒│ │ │▒▒▒│ │ │▒▒▒│ │▒▒▒│ │
3990
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3991
+ 3│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │
3992
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3993
+ 4│ │ │ │▒▒▒│ │ │▒▒▒│ │ │ │ │ │▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ │
3994
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3995
+ 5│ │▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
3996
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3997
+ 6│ │▒▒▒│▒▒▒│▒▒▒│ │ │ │▒▒▒│ │ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
3998
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
3999
+ 7│ │ │▒▒▒│ │ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
4000
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4001
+ 8│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
4002
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4003
+ 9│ │ │ │ │ │▒▒▒│ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
4004
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4005
+ 10│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
4006
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4007
+ 11│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │
4008
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4009
+ 12│ │ │ │ │ │▒▒▒│ │ │ │ │▒▒▒│ │▒▒▒│ │▒▒▒│ │ │ │▒▒▒│ │
4010
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4011
+ 13│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
4012
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4013
+ 14│ │ │ │▒▒▒│ │▒▒▒│ │ │ │ │ │ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │
4014
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4015
+ 15│ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │
4016
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4017
+ 16│ │ │▒▒▒│ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒│ │▒▒▒│ │
4018
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4019
+ 17│ │▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒│ │
4020
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4021
+ 18│ │ │ │ │ │ │ │▒▒▒│ │ │ │ │ │ │▒▒▒│ │▒▒▒│ │▒▒▒│ │
4022
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4023
+ 19│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│▒▒▒│ │
4024
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
3739
4025
  Solutions found: 1
3740
4026
  status: OPTIMAL
3741
- Time taken: 3.10 seconds
4027
+ Time taken: 3.09 seconds
3742
4028
  ```
3743
4029
 
3744
4030
  **Solved puzzle**
3745
4031
 
3746
4032
  Applying the solution to the puzzle visually:
3747
4033
 
3748
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/yin_yang_solved.png" alt="Yin-Yang solved" width="500">
4034
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/yin_yang_solved.png" alt="Yin-Yang solved" width="500">
3749
4035
 
3750
4036
  ---
3751
4037
 
@@ -3768,7 +4054,7 @@ Binairo is played on a rectangular grid with no standard size. Some cells start
3768
4054
 
3769
4055
  **Unsolved puzzle**
3770
4056
 
3771
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/binairo_unsolved.png" alt="Binairo unsolved" width="500">
4057
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/binairo_unsolved.png" alt="Binairo unsolved" width="500">
3772
4058
 
3773
4059
  Code to utilize this package and solve the puzzle:
3774
4060
 
@@ -3857,7 +4143,7 @@ Time taken: 0.02 seconds
3857
4143
 
3858
4144
  Applying the solution to the puzzle visually:
3859
4145
 
3860
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/binairo_solved.png" alt="Binairo solved" width="500">
4146
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/binairo_solved.png" alt="Binairo solved" width="500">
3861
4147
 
3862
4148
  ---
3863
4149
 
@@ -3884,7 +4170,7 @@ You have a grid of squares, with numbers written in some (but not all) of the sq
3884
4170
 
3885
4171
  **Unsolved puzzle**
3886
4172
 
3887
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/rectangles_unsolved.png" alt="Rectangles unsolved" width="500">
4173
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/rectangles_unsolved.png" alt="Rectangles unsolved" width="500">
3888
4174
 
3889
4175
  Code to utilize this package and solve the puzzle:
3890
4176
 
@@ -3970,7 +4256,7 @@ Time taken: 0.01 seconds
3970
4256
 
3971
4257
  Applying the solution to the puzzle visually:
3972
4258
 
3973
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/rectangles_solved.png" alt="Rectangles solved" width="500">
4259
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/rectangles_solved.png" alt="Rectangles solved" width="500">
3974
4260
 
3975
4261
  ---
3976
4262
 
@@ -3991,7 +4277,7 @@ You're given a grid of N squares and a region size M, some of which contain numb
3991
4277
 
3992
4278
  **Unsolved puzzle**
3993
4279
 
3994
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/palisade_unsolved.png" alt="Palisade unsolved" width="500">
4280
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/palisade_unsolved.png" alt="Palisade unsolved" width="500">
3995
4281
 
3996
4282
  Code to utilize this package and solve the puzzle:
3997
4283
 
@@ -4058,7 +4344,7 @@ Time taken: 11.94 seconds
4058
4344
 
4059
4345
  Applying the solution to the puzzle visually:
4060
4346
 
4061
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/palisade_solved.png" alt="Palisade solved" width="500">
4347
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/palisade_solved.png" alt="Palisade solved" width="500">
4062
4348
 
4063
4349
  ---
4064
4350
 
@@ -4079,7 +4365,7 @@ You have a grid of squares, some light and some dark. Your aim is to light all t
4079
4365
 
4080
4366
  **Unsolved puzzle**
4081
4367
 
4082
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/flip_unsolved.png" alt="Flip unsolved" width="500">
4368
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/flip_unsolved.png" alt="Flip unsolved" width="500">
4083
4369
 
4084
4370
  Code to utilize this package and solve the puzzle:
4085
4371
 
@@ -4122,7 +4408,7 @@ status: OPTIMAL
4122
4408
 
4123
4409
  This picture won't mean much as the game is about the sequence of moves not the final frame as shown here.
4124
4410
 
4125
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/flip_solved.png" alt="Flip solved" width="500">
4411
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/flip_solved.png" alt="Flip solved" width="500">
4126
4412
 
4127
4413
  ---
4128
4414
 
@@ -4151,7 +4437,7 @@ Read more about the history and methods behind nurikabe in the [Wikipedia nurika
4151
4437
 
4152
4438
  **Unsolved puzzle**
4153
4439
 
4154
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/nurikabe_unsolved.png" alt="Nurikabe unsolved" width="500">
4440
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/nurikabe_unsolved.png" alt="Nurikabe unsolved" width="500">
4155
4441
 
4156
4442
  Code to utilize this package and solve the puzzle:
4157
4443
 
@@ -4238,7 +4524,7 @@ Time taken: 1.62 seconds
4238
4524
 
4239
4525
  **Solved puzzle**
4240
4526
 
4241
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/nurikabe_solved.png" alt="Nurikabe solved" width="500">
4527
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/nurikabe_solved.png" alt="Nurikabe solved" width="500">
4242
4528
 
4243
4529
  ---
4244
4530
 
@@ -4261,7 +4547,7 @@ Time taken: 1.62 seconds
4261
4547
 
4262
4548
  **Unsolved puzzle**
4263
4549
 
4264
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/heyawake_unsolved.png" alt="Heyawake unsolved" width="500">
4550
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/heyawake_unsolved.png" alt="Heyawake unsolved" width="500">
4265
4551
 
4266
4552
  Code to utilize this package and solve the puzzle:
4267
4553
 
@@ -4304,57 +4590,57 @@ solutions = binst.solve_and_print()
4304
4590
 
4305
4591
  ```python
4306
4592
  Solution found
4307
- 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
4593
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
4308
4594
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
4309
- ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
4310
- 0│ │ │▒▒▒│ │ 4 │▒▒▒│ 4 │▒▒▒│ 44 │▒▒▒│ 4 │▒▒▒│ 4 │ │▒▒▒│ │ │
4311
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4312
- 1│▒▒▒│ │ │▒▒▒│ │ │ │ │▒▒▒│ │ │ │ │▒▒▒│ │ │ │▒▒▒│ │
4313
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4314
- 2│ │ │▒▒▒│ │ │ │▒▒▒│ 2 │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│
4315
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4316
- 3│ │▒▒▒│ │▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ │▒▒▒│ │▒▒▒│ │ │ │
4317
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4318
- 4│ │ │ │▒▒▒│ ││▒▒▒│ │▒▒▒│ │ │ │ │▒▒▒│ │ │ │▒▒▒│
4319
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4320
- 5│▒▒▒│ │ │ │▒▒▒│ │ │ │▒▒▒│ │ │▒▒▒│ 5 │▒▒▒│ │ │▒▒▒│ │
4321
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4322
- 6│ 3 │ │▒▒▒│ │ │ │▒▒▒│ │ │ │▒▒▒│ │ 5 │▒▒▒│ 5 │ │▒▒▒│ │ │
4323
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4324
- 7│▒▒▒││▒▒▒│ │ │ │ │▒▒▒│ │ │ │▒▒▒│ 5 │▒▒▒│ │ │▒▒▒│ │▒▒▒│
4325
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4326
- 8│ 3 │ │▒▒▒│ 3 │▒▒▒│ 3 │ │▒▒▒│ │▒▒▒│ 3 │▒▒▒│ │ │ │ │▒▒▒│ │ │ 2 │
4327
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4328
- 9│ 3 │▒▒▒│ │ 33 │▒▒▒│ │ │ 3 │▒▒▒│ 44 │▒▒▒│ 4 │▒▒▒│ 4 │ │▒▒▒│
4329
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4330
- 10│▒▒▒│ │ 3 │▒▒▒│ 3 │▒▒▒│ │▒▒▒│ 3 │▒▒▒│ 44 │▒▒▒│ 44 │ │▒▒▒│
4331
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4332
- 11│ │ │ │▒▒▒│ │ │ │ │▒▒▒│ 33 │ │▒▒▒│ │ │▒▒▒│ 2 │▒▒▒│ 2 │ 3 │
4333
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4334
- 12│ │ │▒▒▒│ 22 │▒▒▒│ 5 │▒▒▒│ 5 │ 33 │▒▒▒│ │ │ │ │▒▒▒│ 2 │ 2 │▒▒▒│
4335
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4336
- 13│ │▒▒▒│ │ 222 │▒▒▒│ 55 │▒▒▒│ 3 │ 22 │▒▒▒│ │▒▒▒│ │ 3 │
4337
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4338
- 14│ │ 1 │▒▒▒│ 22 │▒▒▒│ 5 │▒▒▒│ 5 │ 3 │▒▒▒│ 22 │ │▒▒▒│ │ │ │ │▒▒▒│
4339
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4340
- 15│▒▒▒│ 11 │ │▒▒▒│ │ 5 │ 55 │▒▒▒│ 3 │▒▒▒│ 2 │ 11 │▒▒▒│ │ │ 3 │
4341
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4342
- 16│ │ 1 │ 1 │▒▒▒│ │ │▒▒▒│ 5 │▒▒▒│ 33 │ 2 │▒▒▒│ 11 │ │▒▒▒│ │▒▒▒│ 3 │
4343
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4344
- 17│ │ 2 │▒▒▒│ 11 │ 1│▒▒▒│ │ │ │▒▒▒│ │▒▒▒│ 1 ││▒▒▒│ │ 3 │
4345
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4346
- 18│ │▒▒▒│ 2 │ 1 1 │▒▒▒│ │ │ │▒▒▒│ │ │ │ │▒▒▒│ 2 │ │▒▒▒│
4347
- ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
4348
- 19│ │ │ │ │▒▒▒│ │ │▒▒▒│ 2 │▒▒▒│ │ 2 │▒▒▒│ 2 │▒▒▒│ │ 2 │▒▒▒│ │ 3 │
4349
- └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
4595
+ ┌───┬───┬───┬───┬───────────────────────────────────────┬───────┬───────┬───────┐
4596
+ 0│ │ │▒▒▒│ │ 4 ▒▒▒ 4 ▒▒▒ 4 4 ▒▒▒ 4 ▒▒▒ 4 │ ▒▒▒│ 0 0
4597
+ │ ├───┤ │ ├───────┬───────────┬───────┬───────────┤ │ │ │
4598
+ 1│▒▒▒│ │ │▒▒▒│ 0 0 │▒▒▒ │▒▒▒ 0 0 │▒▒▒
4599
+ │ │ │ │ │ ├───────────┤ │ ├───────┴───┬───┴───┬───┤
4600
+ 2│ │ │▒▒▒│ │ 0 0 │▒▒▒ 2 ▒▒▒│ ▒▒▒ ▒▒▒ │▒▒▒ 0
4601
+ ├───┴───┴───┤ │ ├───────┬───┤ ├───────┬───┴───┬───────┤ │ │
4602
+ 3│ ▒▒▒ │▒▒▒│ 0 0 ▒▒▒│ │▒▒▒ │▒▒▒ ▒▒▒│ 0
4603
+ │ ├───┴───────┴───────┤ │ ├───────┤ ├───────┴───────┼───┤
4604
+ 4│ ▒▒▒ │▒▒▒│ ▒▒▒│ 0 0 │▒▒▒ │▒▒▒│
4605
+ ├───┬───────┤ ├───┴───┬───┼───┬───┴───────┤ │ │
4606
+ 5│▒▒▒│ ▒▒▒ ▒▒▒││▒▒▒ 5 ▒▒▒│ ▒▒▒│
4607
+ │ │ ├───┬───────┬───────┴───┬───┤ │ │ │ │ │
4608
+ 6│ 3 │ ▒▒▒│ 0 0 │▒▒▒ │ │▒▒▒│ │ 5 ▒▒▒ 5 │ ▒▒▒ │ │
4609
+ │ │ │ │ │ ├───┴───┤ │ │ ├───┤
4610
+ 7│▒▒▒│ │▒▒▒│ 0 0 ▒▒▒│ 0 0 │▒▒▒ 5 ▒▒▒│ ▒▒▒ │▒▒▒│
4611
+ │ │ ├───┴───────┼───────────┼───────┤ ├───────────┴───────┬───────┤ │
4612
+ 8│ 3 │ ▒▒▒│ 3 ▒▒▒ 3 │ ▒▒▒ │▒▒▒ 3 │▒▒▒│ ▒▒▒│ 0 0 │ 2 │
4613
+ │ │ │ │ │ ├───┴───────────────────┤ │ │
4614
+ 9│ 3 │▒▒▒ │ 3 3 ▒▒▒│ │ 3 ▒▒▒│ 4 4 ▒▒▒ 4 ▒▒▒ 4 │ 0 0 │▒▒▒│
4615
+ │ ├───────┤ ├───────┬───┤ │ ├───────┴───┤
4616
+ 10│▒▒▒│ 0 0 │ 3 ▒▒▒ 3 │▒▒▒ │▒▒▒ 3 │▒▒▒ 4 4 ▒▒▒ 4 4 │ ▒▒▒
4617
+ ├───┤ ├───────────┤ │ │ ├───┬───────────────┬───┴───────┬───┤
4618
+ 11│ │ 0 0 │▒▒▒ │▒▒▒│ 3 3 │ │▒▒▒ ▒▒▒│ 2 ▒▒▒ 2 │ 3 │
4619
+ │ ├───┬───┼───────────┼───────┴───┤ │ │ │ │ │
4620
+ 12│ │ │▒▒▒│ 2 2 ▒▒▒│ 5 ▒▒▒ 5 │ 3 3 │▒▒▒│ │▒▒▒ 2 2 │▒▒▒│
4621
+ │ │ ├───┤ │ ├───────┼───┴───┬───────┬───┴───────────┤ │
4622
+ 13│ │▒▒▒│ │ 2 2 2 │▒▒▒ 5 5 │▒▒▒ 3 │ 2 2 │▒▒▒ ▒▒▒ │ 3 │
4623
+ │ ├───┴───┤ │ │ │ │ │ │ │
4624
+ 14│ │ 1 ▒▒▒│ 2 2 ▒▒▒│ 5 ▒▒▒ 5 │ 3 ▒▒▒│ 2 2 │ ▒▒▒│ │▒▒▒│
4625
+ │ │ ├───────┬───┤ │ │ ├───────┤ │ │
4626
+ 15│▒▒▒│ 1 1 │ ▒▒▒│ 0 │ 5 5 5 │▒▒▒ 3 │▒▒▒ 2 │ 1 1 │▒▒▒ │ 3 │
4627
+ │ │ │ │ │ │ │ │ ├───────┬───┬───┤ │
4628
+ 16│ │ 1 1 │▒▒▒ 0 │▒▒▒ 5 ▒▒▒│ 3 3 │ 2 ▒▒▒│ 1 1 │ ▒▒▒│ │▒▒▒│ 3 │
4629
+ │ ├───────┼───────┴───┼───┬───────┴───┬───┼───────┤ │ │ ├───┤ │
4630
+ 17│ │ 2 ▒▒▒│ 1 1 10 │▒▒▒ │▒▒▒ │▒▒▒ 1 │ │▒▒▒│ │ 3 │
4631
+ │ │ │ │ │ │ ├───────┴───────┼───┬───┴───┤ │ │
4632
+ 18│ │▒▒▒ 2 │ 1 1 ▒▒▒│ 0 │▒▒▒│ │▒▒▒ 2 │ │▒▒▒│
4633
+ ├───┴───────┴───────────┴───┼───────────┤ ├───────────────┤ │ │ │ │
4634
+ 19│ ▒▒▒ │▒▒▒ 2 ▒▒▒│ │ 2 ▒▒▒ 2 ▒▒▒│ │ 2 ▒▒▒│ │ 3 │
4635
+ └───────────────────────────┴───────────┴───┴───────────────┴───┴───────┴───┴───┘
4350
4636
  Solutions found: 1
4351
4637
  status: OPTIMAL
4352
- Time taken: 38.04 seconds
4638
+ Time taken: 6.72 seconds
4353
4639
  ```
4354
4640
 
4355
4641
  **Solved puzzle**
4356
4642
 
4357
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/heyawake_solved.png" alt="Heyawake solved" width="500">
4643
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/heyawake_solved.png" alt="Heyawake solved" width="500">
4358
4644
 
4359
4645
  ---
4360
4646
 
@@ -4378,7 +4664,7 @@ You have to draw lines between the dots to form a single loop without crossings
4378
4664
 
4379
4665
  **Unsolved puzzle**
4380
4666
 
4381
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/shingoki_unsolved.png" alt="Shingoki unsolved" width="500">
4667
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/shingoki_unsolved.png" alt="Shingoki unsolved" width="500">
4382
4668
 
4383
4669
  Code to utilize this package and solve the puzzle:
4384
4670
 
@@ -4418,57 +4704,59 @@ Note that the solver is much slower for large puzzles like this example and take
4418
4704
 
4419
4705
  ```python
4420
4706
  Solution found
4421
- 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
4422
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
4423
- ┌───────────┐ ┌───────────────────────────┐ ┌───┐ ┌───┐
4424
- 0 . . . . . │ . . . │ . │ . . . . . . . │ . │ . │ . │ . │
4425
- ┌───────────────┐ └───┐ ┌───┘┌───────┐ ┌───────────┘ └───┘
4426
- 1│ . . . . . . │ . │ . . . │ . . │ . │ . . . . . . . │
4427
- └───┐ ┌───────┘ ┌───┘ └───┐ └───┐ └───┘ ┌───┐┌───┐
4428
- 2 . │ . │ . . . │ . . . . │ . . │ . . . . │ . │ . │ . │ . │ . │
4429
- ┌───┘ └───┐ └───────┐ │ │ ┌───┘ ┌───┐ ┌───┘ │ │ │ │ │
4430
- 3│ . . . . . . . . . │ . │ . . . │ . │ . . . │ . │ . │ . │
4431
- └───────┐ └───┐ ┌───────┘ │ │ │ ┌───┘ └───┘ ┌───┘ │ │ │ │
4432
- 4 . . │ . . │ . │ . . . . │ . │ . │ . . . . . . . . │ . │
4433
- ┌───────┘ ┌───┘ └───────┐ └───┘ └───┘ ┌───────┐ └───┘ │ │
4434
- 5│ . . . │ . . . . │ . . . . . . . . │ . . . . │ . │
4435
- └───┐ ┌───┘ ┌───┐ └───────────────────┘ └───────────┐ │ │
4436
- 6 . │ . │ . . . │ . │ . . . . . . . . . . . . . │ . │
4437
- ┌───┘ ┌───┘ └───────┐ ┌───────────┐ └───┐ ┌───────┘ │ │
4438
- 7│ . . │ . . │ . . . . │ . . │ . . . . . . │ . . . │ . │
4439
- ┌───┘ ┌───────┐ └───────┘ ┌───┐ ┌───┘ └───┐ │ │
4440
- 8 . │ . . . │ . │ . . │ . . . . . │ . │ . │ . . . . . . │
4441
- │ │ │ │ ┌───┘ ┌───────┐ │ │ │ ┌───┐ │ │ │
4442
- 9│ . . . . . . . . . . . . . . │ . │ . │ . │ . . . │
4443
- └───────────┘ │ │ ┌───┘ │ │ │ │ │ │ │ └───────┘
4444
- 10│ . . . . . . . . . . . │ . │ . │ . │ . │ . │ . . . .
4445
- └───────────┐ ┌───┘ │ │ │ │ │ │ │ │ └───────┐ ┌───┘
4446
- 11 . . . . . . │ . │ . . . . . . . . . . . │ . │ .
4447
- ┌───┐ └───┘ │ │ ┌───┐ │ │ │ └───┘ ┌───┐ │ │
4448
- 12│ . │ . . . . . . . . . . │ . │ . . . . . │ . │ . │ .
4449
- └───────┐ ┌───┘ │ │ │ │ │ └───┐ └───┘ │ │ └───┐
4450
- 13│ . . . │ . . . . . │ . │ . │ . │ . . . . . . . │ . . │
4451
- ┌───┐ └───────┘└───┘┌───┘ ┌───────┐ └───┐
4452
- 14│ . . │ . │ . . . . . . . . . │ . . │ . . . │ . . │ . │
4453
- │ │ │ └───────┐ ┌───┐ └───────────┘ └───┐ │ │ │ ┌───┘
4454
- 15│ . . │ . . . . │ . │ . . . . . . . │ . . │ . │ . │ . .
4455
- │ │ └───────┐ └───┘ ┌───┐ │ │ └───┘┌───┘
4456
- 16│ . . . . . . . │ . . │ . │ . . . . . . . . . │ .
4457
- │ │ ┌───┘ ┌───────┘ ┌───┘ └───────────┘ └───┐ ┌───┐ │ │
4458
- 17│ . │ . . │ . . │ . . . │ . . . . . . . │ . │ . │ . │ . │ .
4459
- └───┐ ┌───┘ ┌───┘ ┌───────────┐ ┌───────┘└───┘ └───┐
4460
- 18 . . │ . │ . │ . . . . . │ . . . │ . │ . . . . . . . │
4461
- └───┐ │ │ └───────────┘ ┌───┘ ┌───────┘ └───────┐ ┌───────┐
4462
- 19 . │ . │ . │ . . . . . . . │ . . . . . . │ . │ . . │ . │
4463
- └───┘ └───────────────────┘ └───────────────────┘ └───┘ └───┘
4707
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2
4708
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
4709
+
4710
+ 0 . . . . . 4B───────────┐ ┌───────────────────────────┐ ┌───┐ ┌───┐
4711
+ │ │ │ │ │ │ │
4712
+ 1 ┌──────────────5B └───┐ 2B───┘ 3B───────┐ ┌──3W───────┘└──2B
4713
+ │ │ │ │ │
4714
+ 2 2B──2B ┌──2W───┘ ┌───┘ └───┐ 2B───┐ 2B───┘ . ┌──3B 5W ┌───┐ 11W
4715
+ │ │ │ │ │ │ │ │ │
4716
+ 3 ┌───┘ └───┐ . 3B──────3B ┌───┘ 2B───┐ ┌───┘ 3W │ │
4717
+ │ │ │ │ │ │ │ │ │
4718
+ 4 └──2W───┐ └──2B ┌──2W───┘ 3W 2W 2B──2B └───┘ ┌───┘ │ │ 8W
4719
+ │ │ │ │ │ │
4720
+ 5 ┌───────┘ ┌───┘ └───────┐ └──6B └───┘ ┌──────4B 2W . └───┘ │ │
4721
+ │ │ │ │ │ │
4722
+ 6 └───┐ ┌──2B . ┌───┐ └───────────────────┘ . 2W └──────────4B │ │
4723
+ │ │ │ │ │
4724
+ 7 ┌──2B 2W . ┌───┘ 3B───────┐ . ┌──3W───────┐ └───┐ ┌──────3B │ │
4725
+ │ │ │ │ │ │
4726
+ 8 4W 3B───┘ . 3W ┌───────┐ └──────3B ┌──6B┌───┘ 2B───┐ . │ │
4727
+ │ │ │ │ │ │ │ │ │ │
4728
+ 9 . . │ ┌───┘ ┌──2W──7B │ │ │ ┌───┐ . │ │
4729
+ │ │ │ │ │ │ │ │ │ │ │ │ │
4730
+ 10 └──────3W───┘ 3W 4W 5B───┘ . 5W 4W │ │ └──2W───┘
4731
+ │ │ │ │ │ │ │ │ │ │ │ │
4732
+ 11 7B───────────┐ ┌───┘ │ . . │ └───────┐ 3B───┘
4733
+ │ │ │ │ │ │ │ │ │
4734
+ 12 ┌───┐ . └──2B . 4W ┌───┐ └───┘ ┌──5B .
4735
+ │ │ │ │ │ │ │ │ │ │ │ │ │
4736
+ 13 └──2W───┐ . 2B───┘ 4W 3W │ │ │ └───┐ . 5B──2B 3W └───┐
4737
+ │ │ │ │ │ │
4738
+ 14 ┌───┐ │ . └───────┘ 3B───┘ 7W ┌──2B 5B───────┐└───┐
4739
+ │ │ │ │ │ │ │ │
4740
+ 15 │ │ └──────3B 2B───┐ └──────3W───┘ 2B───┐ . 2W┌───┘
4741
+ │ │ │ │ │ │ │ │
4742
+ 16 └──2W───┐ └───┘ │ . ┌───┐ . . │ │ . └───┘ 3B───┘
4743
+ │ │ │ │ │ │
4744
+ 17 4W . ┌──2B 3B───────┘ ┌──2B 4B───────────┘ └───┐ ┌───┐ 3W .
4745
+ │ │ │ │ │ │
4746
+ 18 7W └──3B┌──2B . ┌───┘ 4B───────────┐ ┌──2W──3B 2B───┘ └───┐
4747
+ │ │ │ │ │ │ │
4748
+ 19 └───┐ 3W └──3W───────┘ 2B───┘ ┌───────┘ └───────┐ 3W ┌──2W───┐
4749
+ │ │ │ │ │ │ │ │ │
4750
+ 20 . 2B───┘ └──────────5W───────┘ . └──5W──────────────6B └───┘ . └───┘
4751
+
4464
4752
  Solutions found: 1
4465
4753
  status: OPTIMAL
4466
- Time taken: 425.97 seconds
4754
+ Time taken: 72.80 seconds
4467
4755
  ```
4468
4756
 
4469
4757
  **Solved puzzle**
4470
4758
 
4471
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/shingoki_solved.png" alt="Shingoki solved" width="500">
4759
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/shingoki_solved.png" alt="Shingoki solved" width="500">
4472
4760
 
4473
4761
  ---
4474
4762
 
@@ -4497,7 +4785,7 @@ You are given a grid where some cells have numbers. Your goal is to shade some c
4497
4785
 
4498
4786
  **Unsolved puzzle**
4499
4787
 
4500
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/tapa_unsolved.png" alt="Tapa unsolved" width="500">
4788
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/tapa_unsolved.png" alt="Tapa unsolved" width="500">
4501
4789
 
4502
4790
  Code to utilize this package and solve the puzzle:
4503
4791
 
@@ -4588,7 +4876,7 @@ Time taken: 14.20 seconds
4588
4876
 
4589
4877
  **Solved puzzle**
4590
4878
 
4591
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/tapa_solved.png" alt="Tapa solved" width="500">
4879
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/tapa_solved.png" alt="Tapa solved" width="500">
4592
4880
 
4593
4881
  ---
4594
4882
 
@@ -4611,7 +4899,7 @@ Binairo+ is played on a rectangular grid with no standard size. Some cells start
4611
4899
 
4612
4900
  **Unsolved puzzle**
4613
4901
 
4614
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/binairo_plus_unsolved.png" alt="Binairo Plus unsolved" width="500">
4902
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/binairo_plus_unsolved.png" alt="Binairo Plus unsolved" width="500">
4615
4903
 
4616
4904
  Code to utilize this package and solve the puzzle:
4617
4905
 
@@ -4713,7 +5001,7 @@ Time taken: 0.00 seconds
4713
5001
 
4714
5002
  **Solved puzzle**
4715
5003
 
4716
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/binairo_plus_solved.png" alt="Binairo Plus solved" width="500">
5004
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/binairo_plus_solved.png" alt="Binairo Plus solved" width="500">
4717
5005
 
4718
5006
  ---
4719
5007
 
@@ -4739,7 +5027,7 @@ The objective is to place black triangles in the white cell in such a way so tha
4739
5027
 
4740
5028
  **Unsolved puzzle**
4741
5029
 
4742
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/shakashaka_unsolved.png" alt="Shakashaka unsolved" width="500">
5030
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/shakashaka_unsolved.png" alt="Shakashaka unsolved" width="500">
4743
5031
 
4744
5032
  Code to utilize this package and solve the puzzle:
4745
5033
 
@@ -4891,7 +5179,7 @@ Time taken: 0.36 seconds
4891
5179
 
4892
5180
  **Solved puzzle**
4893
5181
 
4894
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/shakashaka_solved.png" alt="Shakashaka solved" width="500">
5182
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/shakashaka_solved.png" alt="Shakashaka solved" width="500">
4895
5183
 
4896
5184
  ---
4897
5185
 
@@ -4913,7 +5201,7 @@ Kakuro is played on a rectangular grid by placing numbers in the white cells suc
4913
5201
 
4914
5202
  **Unsolved puzzle**
4915
5203
 
4916
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/kakuro_unsolved.png" alt="Kakuro unsolved" width="500">
5204
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/kakuro_unsolved.png" alt="Kakuro unsolved" width="500">
4917
5205
 
4918
5206
  Code to utilize this package and solve the puzzle:
4919
5207
 
@@ -4972,7 +5260,7 @@ Time taken: 0.00 seconds
4972
5260
 
4973
5261
  **Solved puzzle**
4974
5262
 
4975
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/kakuro_solved.png" alt="Kakuro solved" width="500">
5263
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/kakuro_solved.png" alt="Kakuro solved" width="500">
4976
5264
 
4977
5265
  ---
4978
5266
 
@@ -4992,7 +5280,7 @@ Time taken: 0.00 seconds
4992
5280
 
4993
5281
  **Unsolved puzzle**
4994
5282
 
4995
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/sudoku_jigsaw_unsolved.png" alt="Sudoku Jigsaw unsolved" width="500">
5283
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/sudoku_jigsaw_unsolved.png" alt="Sudoku Jigsaw unsolved" width="500">
4996
5284
 
4997
5285
  Code to utilize this package and solve the puzzle:
4998
5286
 
@@ -5031,15 +5319,27 @@ solutions = binst.solve_and_print()
5031
5319
 
5032
5320
  ```python
5033
5321
  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']]
5322
+
5323
+ 0 1 2 3 4 5 6 7 8
5324
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
5325
+ 0│ 1 9 4 │ 2 │ 3 │ 6 │ 8 │ 5 │ 7 │
5326
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5327
+ 1│ 2 │ 8 │ 5 9 4 │ 7 │ 1 6 │ 3
5328
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5329
+ 2│ 6 │ 3 │ 8 │ 4 7 5 9 │ 1 │ 2 │
5330
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5331
+ 3│ 7 │ 6 │ 3 │ 5 │ 9 │ 1 │ 2 │ 8 │ 4 │
5332
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5333
+ 4│ 4 │ 5 │ 2 │ 1 │ 6 │ 3 │ 7 │ 9 │ 8 │
5334
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5335
+ 5│ 5 │ 7 │ 9 │ 8 │ 1 │ 4 │ 3 │ 2 │ 6 │
5336
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5337
+ 6│ 3 │ 1 │ 7 │ 6 │ 8 │ 2 │ 5 │ 4 │ 9 │
5338
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5339
+ 7│ 9 │ 4 │ 1 │ 7 │ 2 │ 8 │ 6 │ 3 │ 5 │
5340
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5341
+ 8│ 8 │ 2 │ 6 │ 3 │ 5 │ 9 │ 4 │ 7 │ 1 │
5342
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┘
5043
5343
  Solutions found: 1
5044
5344
  status: OPTIMAL
5045
5345
  Time taken: 0.01 seconds
@@ -5047,7 +5347,7 @@ Time taken: 0.01 seconds
5047
5347
 
5048
5348
  **Solved puzzle**
5049
5349
 
5050
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/sudoku_jigsaw_solved.png" alt="Sudoku Jigsaw solved" width="500">
5350
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/sudoku_jigsaw_solved.png" alt="Sudoku Jigsaw solved" width="500">
5051
5351
 
5052
5352
  ---
5053
5353
 
@@ -5068,7 +5368,7 @@ Time taken: 0.01 seconds
5068
5368
 
5069
5369
  **Unsolved puzzle**
5070
5370
 
5071
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/sudoku_killer_unsolved.png" alt="Sudoku Killer unsolved" width="500">
5371
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/sudoku_killer_unsolved.png" alt="Sudoku Killer unsolved" width="500">
5072
5372
 
5073
5373
  Code to utilize this package and solve the puzzle:
5074
5374
 
@@ -5103,23 +5403,35 @@ solutions = binst.solve_and_print()
5103
5403
 
5104
5404
  ```python
5105
5405
  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']]
5406
+
5407
+ 0 1 2 3 4 5 6 7 8
5408
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
5409
+ 0│ 5 4 8 │ 7 │ 9 │ 1 │ 6 2 3
5410
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5411
+ 1│ 3 │ 7 │ 1 │ 6 2 8 4 9 │ 5 │
5412
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5413
+ 2│ 2 6 9 5 4 │ 3 │ 1 │ 7 │ 8 │
5414
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5415
+ 3│ 1 │ 9 │ 4 │ 3 │ 6 │ 2 │ 5 │ 8 │ 7 │
5416
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5417
+ 4│ 8 │ 3 │ 7 │ 1 │ 5 │ 9 │ 2 │ 4 │ 6 │
5418
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5419
+ 5│ 6 │ 2 │ 5 │ 8 │ 7 │ 4 │ 3 │ 1 │ 9 │
5420
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5421
+ 6│ 4 │ 8 │ 2 │ 9 │ 3 │ 5 │ 7 │ 6 │ 1 │
5422
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5423
+ 7│ 7 │ 1 │ 3 │ 2 │ 8 │ 6 │ 9 │ 5 │ 4 │
5424
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┤
5425
+ 8│ 9 │ 5 │ 6 │ 4 │ 1 │ 7 │ 8 │ 3 │ 2 │
5426
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┘
5115
5427
  Solutions found: 1
5116
5428
  status: OPTIMAL
5117
- Time taken: 0.01 seconds
5429
+ Time taken: 0.02 seconds
5118
5430
  ```
5119
5431
 
5120
5432
  **Solved puzzle**
5121
5433
 
5122
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/sudoku_killer_solved.png" alt="Sudoku Killer solved" width="500">
5434
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/sudoku_killer_solved.png" alt="Sudoku Killer solved" width="500">
5123
5435
 
5124
5436
  ---
5125
5437
 
@@ -5148,7 +5460,7 @@ Finding an optimal solution for any graph is NP-hard.
5148
5460
 
5149
5461
  **Unsolved puzzle**
5150
5462
 
5151
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/flood_it_unsolved.png" alt="Flood It unsolved" width="500">
5463
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/flood_it_unsolved.png" alt="Flood It unsolved" width="500">
5152
5464
 
5153
5465
  Code to utilize this package and solve the puzzle:
5154
5466
 
@@ -5198,13 +5510,13 @@ This picture won't mean much as the game is about the sequence and number of mov
5198
5510
 
5199
5511
  Note that the solved solution on the bottom left says that only 18 moves were used (based on the above output) despite the website saying 20 total moves are permitted (and the puzzle settings specified 0 extra moves permitted). Thus the solver managed to find a more optimal solution than the website.
5200
5512
 
5201
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/flood_it_solved.png" alt="Flood It solved" width="500">
5513
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/flood_it_solved.png" alt="Flood It solved" width="500">
5202
5514
 
5203
5515
  ---
5204
5516
 
5205
5517
  ## Pipes (Puzzle Type #55)
5206
5518
 
5207
- Also known as Net.
5519
+ Also known as Net or Network.
5208
5520
 
5209
5521
  * [**Play online 1**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/net.html)
5210
5522
 
@@ -5225,7 +5537,7 @@ The goal is to create a single fully connected graph where each cell's connectio
5225
5537
 
5226
5538
  **Unsolved puzzle**
5227
5539
 
5228
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/pipes_unsolved.png" alt="Pipes unsolved" width="500">
5540
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/pipes_unsolved.png" alt="Pipes unsolved" width="500">
5229
5541
 
5230
5542
  Code to utilize this package and solve the puzzle:
5231
5543
 
@@ -5254,16 +5566,29 @@ solutions = binst.solve_and_print()
5254
5566
 
5255
5567
  ```python
5256
5568
  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']]
5569
+ 0 0 0 0 0 0 0 0 0 0
5570
+ 0 1 2 3 4 5 6 7 8 9
5571
+
5572
+ 0 O───┬───┬───┬───O O───┐ ┌───────O
5573
+ │ │ │ │ │
5574
+ 1 O O O ├───────O │ ├───────O
5575
+ │ │ │ │
5576
+ 2 │ O O───┴───┐ O───┤ │ O O
5577
+ │ │ │ │ │ │ │
5578
+ 3 │ │ O───┬───┴───┬───┘ ├───┴───┘
5579
+ │ │ │ │ │
5580
+ 4 ├───┴───────┴───O ├───────┘ O───┐
5581
+ │ │ │
5582
+ 5 O O───┬───────┬───┘ O O ┌───┘
5583
+ │ │ │ │ │
5584
+ 6 O O───┤ O O O ├───┴───┴───┐
5585
+ │ │ │ │ │ │
5586
+ 7 ├───────┴───┤ ┌───┴───┴───────┐ O
5587
+ │ │ │ │
5588
+ 8 O O───┬───┴───┴───┬───O ┌───┴───┐
5589
+ │ │ │ │
5590
+ 9 O───────┴───────O O O───┴───O O
5591
+
5267
5592
  Solutions found: 1
5268
5593
  status: OPTIMAL
5269
5594
  Time taken: 5.65 seconds
@@ -5271,7 +5596,7 @@ Time taken: 5.65 seconds
5271
5596
 
5272
5597
  **Solved puzzle**
5273
5598
 
5274
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/pipes_solved.png" alt="Pipes solved" width="500">
5599
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/pipes_solved.png" alt="Pipes solved" width="500">
5275
5600
 
5276
5601
  ---
5277
5602
 
@@ -5291,7 +5616,7 @@ You are given a grid of empty cells and 2 filled cell per color. The goal is to
5291
5616
 
5292
5617
  **Unsolved puzzle**
5293
5618
 
5294
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/connect_the_dots_unsolved.png" alt="Connect the Dots unsolved" width="500">
5619
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/connect_the_dots_unsolved.png" alt="Connect the Dots unsolved" width="500">
5295
5620
 
5296
5621
  Code to utilize this package and solve the puzzle:
5297
5622
 
@@ -5341,7 +5666,199 @@ Time taken: 2.91 seconds
5341
5666
 
5342
5667
  **Solved puzzle**
5343
5668
 
5344
- <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/connect_the_dots_solved.png" alt="Connect the Dots solved" width="500">
5669
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/connect_the_dots_solved.png" alt="Connect the Dots solved" width="500">
5670
+
5671
+ ---
5672
+
5673
+ ## Nonograms Colored (Puzzle Type #57)
5674
+
5675
+ Also known as Nonogrids, Numbergrids, or Picross.
5676
+
5677
+ * [**Play online**](https://www.nonograms.org/nonograms2)
5678
+
5679
+ * [**Solver Code**][57]
5680
+
5681
+ <details>
5682
+ <summary><strong>Rules</strong></summary>
5683
+
5684
+ 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.
5685
+
5686
+ </details>
5687
+
5688
+ **Unsolved puzzle**
5689
+
5690
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/nonograms_colored_unsolved.png" alt="Nonograms Colored unsolved" width="500">
5691
+
5692
+ Code to utilize this package and solve the puzzle:
5693
+
5694
+ ```python
5695
+ import numpy as np
5696
+ from puzzle_solver.puzzles.nonograms import nonograms_colored as solver
5697
+ top = [
5698
+ ['5M'], ['8M'], ['1M', '3R', '6M'], ['1M', '5R', '5M'], ['8R', '4M'],
5699
+ ['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'],
5700
+ ['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'],
5701
+ ['1L', '3R', '1M', '8P', '5R', '4M'], ['1L', '3R', '1M', '8P', '5R', '4M'], ['2R', '1M', '9P', '5R', '3M'], ['1R', '9P', '5R', '3M'], ['10P', '5R', '3M'],
5702
+ ['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'],
5703
+ ['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'],
5704
+ ['3G', '2F', '2L', '1F', '4M', '7R'], ['4G', '1F', '4L'], ['1L', '1G', '1F', '1L', '2L'], ['2F', '1L']
5705
+ ]
5706
+ side = [
5707
+ ['1L', '1G'], ['1L', '1G'], ['1L', '2G'], ['6L', '1G', '2L', '2G'], ['2L', '1G', '3F', '1L', '2G', '1F', '1G'],
5708
+ ['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'],
5709
+ ['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'],
5710
+ ['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'],
5711
+ ['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'],
5712
+ ['7M', '8R', '8M', '5P', '3R'], ['24M', '2P', '3R'], ['16M', '7M'], ['12M']
5713
+ ]
5714
+ binst = solver.Board(top=top, side=side)
5715
+ solutions = binst.solve_and_print(visualize_colors={
5716
+ 'M': 'darkmagenta',
5717
+ 'R': 'magenta',
5718
+ 'G': 'green',
5719
+ 'P': 'pink',
5720
+ 'L': 'lime',
5721
+ 'F': 'forestgreen',
5722
+ })
5723
+ ```
5724
+
5725
+ **Script Output**
5726
+
5727
+ ```python
5728
+ Solution found
5729
+ 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
5730
+ 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
5731
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
5732
+ 0│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ L │ G │ │ │ │ │
5733
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5734
+ 1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ L │ G │ │ │ │
5735
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5736
+ 2│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ L │ G │ G │ │ │
5737
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5738
+ 3│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ L │ L │ L │ L │ L │ L │ G │ L │ L │ G │ G │ │ │
5739
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5740
+ 4│ │ │ │ │ │ │ │ │ L │ L │ │ │ │ │ │ │ │ │ │ │ │ │ │ G │ F │ F │ F │ L │ G │ G │ F │ G │ │ │
5741
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5742
+ 5│ │ │ │ │ │ │ │ │ G │ L │ │ │ │ │ │ │ │ │ │ │ │ G │ F │ F │ R │ R │ R │ L │ G │ F │ F │ G │ L │ │
5743
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5744
+ 6│ │ │ │ │ │ │ │ │ G │ G │ L │ │ │ │ │ │ │ │ │ │ G │ F │ F │ R │ R │ R │ L │ L │ G │ F │ L │ F │ G │ │
5745
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5746
+ 7│ │ │ │ │ │ │ │ │ │ G │ L │ G │ G │ L │ L │ L │ L │ │ │ │ │ R │ R │ R │ R │ R │ L │ G │ M │ F │ L │ L │ F │ │
5747
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5748
+ 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 │
5749
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5750
+ 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 │
5751
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5752
+ 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 │ │
5753
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5754
+ 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 │
5755
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5756
+ 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 │ │ │ │
5757
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5758
+ 13│ │ │ │ │ │ │ │ │ M │ M │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ R │ R │ M │ M │ M │ M │ │ │ │ │
5759
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5760
+ 14│ │ │ │ │ │ │ │ R │ R │ R │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ P │ R │ R │ M │ M │ M │ M │ │ │ │ │
5761
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5762
+ 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 │ │ │ │ │ │
5763
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5764
+ 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 │ │ │ │ │ │
5765
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5766
+ 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 │ │ │ │ │ │
5767
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5768
+ 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 │ │ │ │ │
5769
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5770
+ 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 │ │ │ │
5771
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5772
+ 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 │ │ │ │
5773
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5774
+ 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 │ │ │ │
5775
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5776
+ 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 │ │ │ │
5777
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5778
+ 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 │ │ │ │
5779
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5780
+ 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 │ │ │ │
5781
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5782
+ 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 │ │ │ │
5783
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5784
+ 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 │ │ │ │ │
5785
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5786
+ 27│ │ │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ │ │ │ M │ M │ M │ M │ M │ M │ M │ │ │ │ │ │ │
5787
+ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
5788
+ 28│ │ │ │ │ │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ M │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
5789
+ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
5790
+ Solutions found: 1
5791
+ status: OPTIMAL
5792
+ Time taken: 0.40 seconds
5793
+ ```
5794
+
5795
+ The script also visualizes the solution:
5796
+
5797
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/nonograms_colored_script_output.png" alt="Nonograms Colored solved" width="500">
5798
+
5799
+ **Solved puzzle**
5800
+
5801
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/nonograms_colored_solved.png" alt="Nonograms Colored solved" width="500">
5802
+
5803
+ ---
5804
+
5805
+ ## ABC View (Puzzle Type #58)
5806
+
5807
+ * [**Play online**](https://www.brainbashers.com/showabcview.asp)
5808
+
5809
+ * [**Solver Code**][58]
5810
+
5811
+ <details>
5812
+ <summary><strong>Rules</strong></summary>
5813
+
5814
+ Fill every row and column with exactly one A, B, and C (and two blank squares).
5815
+ The clues tell you which letter appears first in that direction in each row or column.
5816
+
5817
+ </details>
5818
+
5819
+ **Unsolved puzzle**
5820
+
5821
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/abc_view_unsolved.png" alt="ABC View unsolved" width="500">
5822
+
5823
+ Code to utilize this package and solve the puzzle:
5824
+
5825
+ ```python
5826
+ import numpy as np
5827
+ from puzzle_solver import abc_view_solver as solver
5828
+ board = np.full((5, 5), ' ')
5829
+ top = np.array(['C', 'C', 'C', 'B', ''])
5830
+ left = np.array(['C', 'C', '', 'A', ''])
5831
+ bottom = np.array(['', 'A', 'A', 'C', 'B'])
5832
+ right = np.array(['', '', 'C', '', ''])
5833
+ binst = solver.Board(board=board, top=top, left=left, bottom=bottom, right=right, characters=['A', 'B', 'C'])
5834
+ solutions = binst.solve_and_print()
5835
+ ```
5836
+
5837
+ **Script Output**
5838
+
5839
+ ```python
5840
+ Solution found
5841
+
5842
+ 0 1 2 3 4
5843
+ ┌───┬───┬───┬───┬───┐
5844
+ 0│ │ C │ │ B │ A │
5845
+ ├───┼───┼───┼───┼───┤
5846
+ 1│ C │ B │ │ A │ │
5847
+ ├───┼───┼───┼───┼───┤
5848
+ 2│ B │ A │ C │ │ │
5849
+ ├───┼───┼───┼───┼───┤
5850
+ 3│ A │ │ B │ │ C │
5851
+ ├───┼───┼───┼───┼───┤
5852
+ 4│ │ │ A │ C │ B │
5853
+ └───┴───┴───┴───┴───┘
5854
+ Solutions found: 1
5855
+ status: OPTIMAL
5856
+ Time taken: 0.01 seconds
5857
+ ```
5858
+
5859
+ **Solved puzzle**
5860
+
5861
+ <img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/puzzles/abc_view_solved.png" alt="ABC View solved" width="500">
5345
5862
 
5346
5863
  ---
5347
5864
 
@@ -5452,3 +5969,5 @@ Issues and PRs welcome!
5452
5969
  [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
5970
  [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
5971
  [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
+ [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
+ [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"