multi-puzzle-solver 1.0.2__py3-none-any.whl → 1.0.4__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.
- {multi_puzzle_solver-1.0.2.dist-info → multi_puzzle_solver-1.0.4.dist-info}/METADATA +384 -111
- {multi_puzzle_solver-1.0.2.dist-info → multi_puzzle_solver-1.0.4.dist-info}/RECORD +13 -10
- puzzle_solver/__init__.py +7 -1
- puzzle_solver/puzzles/connect_the_dots/connect_the_dots.py +48 -0
- puzzle_solver/puzzles/flood_it/parse_map/parse_map.py +0 -1
- puzzle_solver/puzzles/galaxies/galaxies.py +108 -110
- puzzle_solver/puzzles/lits/lits.py +4 -4
- puzzle_solver/puzzles/norinori/norinori.py +11 -9
- puzzle_solver/puzzles/pipes/pipes.py +81 -0
- puzzle_solver/puzzles/star_battle/star_battle.py +10 -7
- puzzle_solver/puzzles/twiddle/twiddle.py +112 -0
- {multi_puzzle_solver-1.0.2.dist-info → multi_puzzle_solver-1.0.4.dist-info}/WHEEL +0 -0
- {multi_puzzle_solver-1.0.2.dist-info → multi_puzzle_solver-1.0.4.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multi-puzzle-solver
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.4
|
|
4
4
|
Summary: Efficient solvers for numerous popular and esoteric logic puzzles using CP-SAT
|
|
5
5
|
Author: Ar-Kareem
|
|
6
6
|
Project-URL: Homepage, https://github.com/Ar-Kareem/puzzle_solver
|
|
@@ -390,6 +390,18 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
|
390
390
|
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/flood_it_unsolved.png" alt="Flood It" width="140">
|
|
391
391
|
</a>
|
|
392
392
|
</td>
|
|
393
|
+
<td align="center">
|
|
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">
|
|
396
|
+
</a>
|
|
397
|
+
</td>
|
|
398
|
+
</tr>
|
|
399
|
+
<tr>
|
|
400
|
+
<td align="center">
|
|
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">
|
|
403
|
+
</a>
|
|
404
|
+
</td>
|
|
393
405
|
</tr>
|
|
394
406
|
</table>
|
|
395
407
|
|
|
@@ -459,6 +471,8 @@ These are all the puzzles that are implemented in this repo. <br> Click on any o
|
|
|
459
471
|
- [Sudoku Jigsaw (Puzzle Type #52)](#sudoku-jigsaw-puzzle-type-52)
|
|
460
472
|
- [Sudoku Killer (Puzzle Type #53)](#sudoku-killer-puzzle-type-53)
|
|
461
473
|
- [Flood It (Puzzle Type #54)](#flood-it-puzzle-type-54)
|
|
474
|
+
- [Pipes (Puzzle Type #55)](#pipes-puzzle-type-55)
|
|
475
|
+
- [Connect the Dots (Puzzle Type #56)](#connect-the-dots-puzzle-type-56)
|
|
462
476
|
- [Why SAT / CP-SAT?](#why-sat--cp-sat)
|
|
463
477
|
- [Testing](#testing)
|
|
464
478
|
- [Contributing](#contributing)
|
|
@@ -472,7 +486,7 @@ The puzzles that have solvers implemented are listed below. Each puzzle has a si
|
|
|
472
486
|
|
|
473
487
|
## Nonograms (Puzzle Type #1)
|
|
474
488
|
|
|
475
|
-
|
|
489
|
+
Also known as Hanjie, Paint by Numbers, Griddlers, Pic-a-Pix, Picross, and Pattern.
|
|
476
490
|
|
|
477
491
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/pattern.html)
|
|
478
492
|
|
|
@@ -560,7 +574,7 @@ Time taken: 0.04 seconds
|
|
|
560
574
|
|
|
561
575
|
## Sudoku (Puzzle Type #2)
|
|
562
576
|
|
|
563
|
-
|
|
577
|
+
Also known as Number Place and Solo.
|
|
564
578
|
|
|
565
579
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/solo.html)
|
|
566
580
|
|
|
@@ -792,6 +806,8 @@ Time taken: 0.02 seconds
|
|
|
792
806
|
|
|
793
807
|
## Light Up (Puzzle Type #5)
|
|
794
808
|
|
|
809
|
+
Also called Akari.
|
|
810
|
+
|
|
795
811
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/lightup.html)
|
|
796
812
|
|
|
797
813
|
* [**Instructions**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/doc/lightup.html#lightup)
|
|
@@ -943,6 +959,8 @@ Time taken: 0.02 seconds
|
|
|
943
959
|
|
|
944
960
|
## Filling (Puzzle Type #7)
|
|
945
961
|
|
|
962
|
+
Also known as Fillomino
|
|
963
|
+
|
|
946
964
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/filling.html)
|
|
947
965
|
|
|
948
966
|
* [**Instructions**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/doc/filling.html#filling)
|
|
@@ -1002,6 +1020,8 @@ Time taken: 0.10 seconds
|
|
|
1002
1020
|
|
|
1003
1021
|
## Keen (Puzzle Type #8)
|
|
1004
1022
|
|
|
1023
|
+
Also known as KenKen
|
|
1024
|
+
|
|
1005
1025
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/keen.html)
|
|
1006
1026
|
|
|
1007
1027
|
* [**Instructions**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/doc/keen.html#keen)
|
|
@@ -1146,7 +1166,7 @@ Time taken: 0.03 seconds
|
|
|
1146
1166
|
|
|
1147
1167
|
## Singles (Puzzle Type #10)
|
|
1148
1168
|
|
|
1149
|
-
Also known as
|
|
1169
|
+
Also known as Hitori.
|
|
1150
1170
|
|
|
1151
1171
|
* [**Play online 1**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/singles.html)
|
|
1152
1172
|
|
|
@@ -1369,7 +1389,7 @@ Time taken: 0.03 seconds
|
|
|
1369
1389
|
|
|
1370
1390
|
## Range (Puzzle Type #13)
|
|
1371
1391
|
|
|
1372
|
-
Also known as
|
|
1392
|
+
Also known as Kurodoko.
|
|
1373
1393
|
|
|
1374
1394
|
* [**Play online 1**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/range.html)
|
|
1375
1395
|
|
|
@@ -1779,6 +1799,8 @@ Time taken: 0.01 seconds
|
|
|
1779
1799
|
|
|
1780
1800
|
## Pearl (Puzzle Type #19)
|
|
1781
1801
|
|
|
1802
|
+
Also known as Masyu
|
|
1803
|
+
|
|
1782
1804
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/pearl.html)
|
|
1783
1805
|
|
|
1784
1806
|
* [**Instructions**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/doc/pearl.html#pearl)
|
|
@@ -1843,6 +1865,8 @@ Time taken: 0.98 seconds
|
|
|
1843
1865
|
|
|
1844
1866
|
## Bridges (Puzzle Type #20)
|
|
1845
1867
|
|
|
1868
|
+
Also known as Hashiwokakero
|
|
1869
|
+
|
|
1846
1870
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/bridges.html)
|
|
1847
1871
|
|
|
1848
1872
|
* [**Instructions**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/doc/bridges.html#bridges)
|
|
@@ -2769,34 +2793,62 @@ solutions = binst.solve_and_print()
|
|
|
2769
2793
|
|
|
2770
2794
|
```python
|
|
2771
2795
|
Solution found
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2796
|
+
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
|
|
2797
|
+
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
|
|
2798
|
+
┌───────────────────┬───────────────────────────────────┬───────────┬───────────────────────────────┐
|
|
2799
|
+
0│ . . . . X │ . X . X . . . . . │ . . . │ X . X . X . . . │
|
|
2800
|
+
│ ┌───┐ ┌───────┘ ┌───────┐ ┌───┘ ├───────────────────────┐ │
|
|
2801
|
+
1│ X │ . │ X │ . . . . . . . │ X . │ X │ . X . . │ . . . . . . │ X . │
|
|
2802
|
+
│ │ └───┘ ┌───┘ └───┴───┐ ┌───┘ ┌───┘ │
|
|
2803
|
+
2│ . │ . . . X . X . X │ . . . . . │ . . │ X . X . X . │ . . . │
|
|
2804
|
+
│ │ ┌───┬───────────────────────┘ │ ┌───┘ │ ┌───┐ │
|
|
2805
|
+
3│ X │ . │ X │ . . . . . . . X . X . │ . │ . . . . . . . │ X │ . │ X │
|
|
2806
|
+
│ │ │ └───────────────────────┐ ┌───┘ └───────────┐ └───┤ │ │
|
|
2807
|
+
4│ . │ . │ . . . X . X . │ . . . . │ . X . X . │ X . X . . │ . │ . │
|
|
2808
|
+
│ └───┼───┐ ┌───────────────┐ │ │ │ ┌───┘ └───┤
|
|
2809
|
+
5│ . X │ . │ X │ . . . . │ . │ X . X . │ . . . . . │ . . . . │ X . X │
|
|
2810
|
+
│ ┌───┘ └───┴───┐ ┌───┘ └───┐ └───┐ ┌───┘ ┌───────┘ │
|
|
2811
|
+
6│ . │ . . . . │ X . │ X . . │ . . . X │ . X . │ . X . │ X . . . . │
|
|
2812
|
+
│ └───┐ │ └───────┐ ├───────────────┤ │ ┌───────┴───────┐ │
|
|
2813
|
+
7│ . X │ . X . │ . . . . │ X │ . X . . │ . . . │ . │ . . . . │ X . X │
|
|
2814
|
+
├───────┘ ┌───┘ └───┤ ┌───┘ ├───┘ └───┐ ┌───┤
|
|
2815
|
+
8│ . . . . │ . X . X . . │ . . . │ X . X . │ X . X . . . │ . │ . │
|
|
2816
|
+
│ │ ┌───┘ │ ┌───┘ │ │ │
|
|
2817
|
+
9│ . X . X │ . . . . . │ X . X . │ . . . │ . . . . . X . │ X │ . │
|
|
2818
|
+
│ ┌───┘ ┌───┘ ├───────────┴───┐ └───┘ │
|
|
2819
|
+
10│ . . . │ . . X . X │ . . . . . │ X . X . │ X . X . . . . . │
|
|
2820
|
+
│ ┌───┘ ┌───┤ └───────────┐ │ ┌───┐ ┌───┐ │
|
|
2821
|
+
11│ X . │ X . . . . │ . │ . X . X . . . . │ . │ . . . . │ X │ . │ X │ . │
|
|
2822
|
+
├───┐ └───────────────────┘ │ ┌───────────┘ └───┐ │ │ │ ├───┤
|
|
2823
|
+
12│ . │ . . . X . X . │ . . . . . │ X . X . X │ . X . │ . │ . │ . │ . │
|
|
2824
|
+
│ └───────────┬───┐ ┌───────┼───┐ └───────────────┐ ├───────────┘ └───┘ │ │
|
|
2825
|
+
13│ X . X . │ . │ . │ . . │ X │ . X . . . . . . │ . │ . . . X . X │ . │
|
|
2826
|
+
│ │ └───┘ │ │ ┌───────┐ ┌───┐ ┌───┘ │ ┌───────────────────┘ │
|
|
2827
|
+
14│ . . . . │ X . X . │ . │ . . │ . X │ . │ X │ . │ X . │ X │ . . . . . . │
|
|
2828
|
+
│ └───┐ ┌───┘ ├───────┘ ┌───┴───┘ │ └───────┤ │ │
|
|
2829
|
+
15│ . X . . . │ . . │ . X │ . X . │ . . . │ . . . │ . │ . X . X . X │
|
|
2830
|
+
│ ┌───────┘ │ ┌───┘ ┌───────┤ ┌───┐ └───────────┤ │ │
|
|
2831
|
+
16│ . . . │ X . X . │ . │ . . │ . . │ X │ . │ X . X . │ X │ . . . . . . │
|
|
2832
|
+
│ ┌───────┘ │ │ │ ┌───┴───┘ └───┐ ┌───┐ ├───┘ ┌───┐ │
|
|
2833
|
+
17│ . │ X . . . . . │ X │ . X │ . │ . . . . │ . │ . │ . │ . . │ X │ . X . X │
|
|
2834
|
+
│ └───────┐ ┌───────┘ │ ┌───┘ │ ┌───┐ │ │ │ │ ┌───┘ │ │
|
|
2835
|
+
18│ . . . │ X . │ X . . │ . │ . . │ X │ . │ X . │ X │ . │ X │ . │ . . │ . . . . │
|
|
2836
|
+
│ │ └───┐ │ └───┐ └───┘ └───┐ └───┘ └───┴───┘ ┌───┘ ┌───────┐ │
|
|
2837
|
+
19│ X . . │ . . . │ . X │ . X │ . . . . │ . . . . . X │ . X │ . X │ . │
|
|
2838
|
+
│ └───┬───┐ │ ┌───┤ ┌───┘ └───┐ ┌───────────┐ │ │ ┌───┘ │
|
|
2839
|
+
20│ . . X . │ X │ . │ . │ . │ . │ . . X . X . │ X │ . X . │ . │ . . │ . │ . . │
|
|
2840
|
+
│ │ ├───┤ │ │ │ ┌───────┴───┘ │ │ ┌───┘ └───┐ │
|
|
2841
|
+
21│ X . . . │ . │ . │ X │ . │ X │ . . . . │ . . . . . . │ X │ . │ X . X │ . │
|
|
2842
|
+
│ ┌───────┐ │ │ └───┘ │ │ │ └───┴───┴───────┐ │ │
|
|
2843
|
+
22│ . │ . X │ . │ X │ . . . │ . │ . X . X │ . X . X . . . . . . │ . │ . │
|
|
2844
|
+
│ │ ┌───┘ │ │ ┌───┐ │ │ │ ┌───────────┘ └───┤
|
|
2845
|
+
23│ . │ . │ . . │ . │ . │ X │ . │ X │ . . . . │ . . . . . X . │ X . X . X │
|
|
2846
|
+
│ │ └───────┘ └───┘ │ └───┘ │ └───────────────────┤
|
|
2847
|
+
24│ . │ X . X . . . │ . . . X . X │ . X . X . . . . . . . . │
|
|
2848
|
+
└───┴───────────────────────┴───────────────────────┴───────────────────────────────────────────────┘
|
|
2797
2849
|
Solutions found: 1
|
|
2798
2850
|
status: OPTIMAL
|
|
2799
|
-
Time taken: 0.
|
|
2851
|
+
Time taken: 0.39 seconds
|
|
2800
2852
|
```
|
|
2801
2853
|
|
|
2802
2854
|
**Solved puzzle**
|
|
@@ -2854,16 +2906,29 @@ solutions = binst.solve_and_print()
|
|
|
2854
2906
|
|
|
2855
2907
|
```python
|
|
2856
2908
|
Solution found
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2909
|
+
0 0 0 0 0 0 0 0 0 0
|
|
2910
|
+
0 1 2 3 4 5 6 7 8 9
|
|
2911
|
+
┌───────────────────────────────────────┐
|
|
2912
|
+
0│ X . . . X . . . . . │
|
|
2913
|
+
├───┐ │
|
|
2914
|
+
1│ │ . . . . . X . X . │
|
|
2915
|
+
│ │ ┌───┐ │
|
|
2916
|
+
2│ │ . X . X . . . │ │ . │
|
|
2917
|
+
│ └───┐ ┌───┐ └───┘ │
|
|
2918
|
+
3│ │ . . │ │ . . X . X │
|
|
2919
|
+
│ │ │ │ │
|
|
2920
|
+
4│ │ X . │ │ X . . . . │
|
|
2921
|
+
├───────┘ └───┘ │
|
|
2922
|
+
5│ X . . . . . . . X . │
|
|
2923
|
+
│ ┌───┐ ┌───┐ │
|
|
2924
|
+
6│ . . . X │ │ . X . │ │ . │
|
|
2925
|
+
├───┐ └───┘ ┌───┘ │ │
|
|
2926
|
+
7│ │ X . . . . . │ │ X │
|
|
2927
|
+
│ └───┐ ┌───┘ │ │
|
|
2928
|
+
8│ │ . X . X │ │ . │
|
|
2929
|
+
│ ┌───┘ ┌───┐ └───────────┘ │
|
|
2930
|
+
9│ │ X . . │ │ . . X . . │
|
|
2931
|
+
└───┴───────────┴───┴───────────────────┘
|
|
2867
2932
|
Solutions found: 1
|
|
2868
2933
|
status: OPTIMAL
|
|
2869
2934
|
Time taken: 0.02 seconds
|
|
@@ -2934,30 +2999,52 @@ solutions = binst.solve_then_constrain() # solve_then_constrain NOT solve_and_p
|
|
|
2934
2999
|
|
|
2935
3000
|
```python
|
|
2936
3001
|
Solution found
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
3002
|
+
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
|
|
3003
|
+
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
|
|
3004
|
+
┌───────────┬───────┬───────────┬───────────┬───────┬───┬───┬───────┬───────┬───┐
|
|
3005
|
+
0│▒▒▒ ▒▒▒ ▒▒▒│ │▒▒▒ ▒▒▒ ▒▒▒│ │ │▒▒▒│ │▒▒▒ │▒▒▒ ▒▒▒│ │
|
|
3006
|
+
│ └───┐ │ ┌───────┘ ┌───┬───┘ ┌───┘ │ │ ┌───┘ ┌───┘ │
|
|
3007
|
+
1│ ▒▒▒ │▒▒▒│▒▒▒│ │▒▒▒│ │▒▒▒ ▒▒▒│ │▒▒▒│▒▒▒ ▒▒▒│ │
|
|
3008
|
+
├───────────┬───┘ │ └───┐ ┌───┘ │ │ ┌───┘ │ └───────┤ ┌───┤
|
|
3009
|
+
2│▒▒▒ ▒▒▒ ▒▒▒│▒▒▒ ▒▒▒│ │▒▒▒│▒▒▒ ▒▒▒│ │▒▒▒│ │▒▒▒ │▒▒▒│ │
|
|
3010
|
+
│ ┌───────┴───┐ │ ┌───┘ └───┐ │ ├───┘ │ ┌───┬───┘ │ │
|
|
3011
|
+
3│▒▒▒│ │▒▒▒│ │▒▒▒ ▒▒▒ │▒▒▒│▒▒▒ │▒▒▒ ▒▒▒ ▒▒▒│▒▒▒│ │▒▒▒ ▒▒▒│ │
|
|
3012
|
+
│ └───────┐ ├───┴───┤ ┌───────┤ │ │ ┌───────┼───┘ │ ┌───┘ │
|
|
3013
|
+
4│ │▒▒▒│▒▒▒ ▒▒▒│▒▒▒│ ▒▒▒│ │▒▒▒ │▒▒▒│ │ │▒▒▒│ │
|
|
3014
|
+
├───┬───────┘ │ │ └───┐ └───┤ ├───┘ │ └───┘ ┌───┤
|
|
3015
|
+
5│▒▒▒│ ▒▒▒ ▒▒▒│ ▒▒▒│ │▒▒▒ ▒▒▒│▒▒▒ │▒▒▒ ▒▒▒ │▒▒▒ ▒▒▒ ▒▒▒ ▒▒▒│ │
|
|
3016
|
+
│ │ ┌───┐ ├───┐ │ │ ┌───┘ ┌───┘ ┌───────┼───┬───────────┤ │
|
|
3017
|
+
6│▒▒▒│ │ │▒▒▒│ │▒▒▒│ │▒▒▒│ ▒▒▒│▒▒▒ ▒▒▒│ │▒▒▒│ │▒▒▒│
|
|
3018
|
+
│ └───┤ └───┤ └───┤ ├───┴───────┼───────┴───┐ │ │ ┌───┘ │
|
|
3019
|
+
7│▒▒▒ ▒▒▒│ ▒▒▒│ ▒▒▒│ │▒▒▒ ▒▒▒ │▒▒▒ │ │▒▒▒│ ▒▒▒│ ▒▒▒│
|
|
3020
|
+
│ ┌───┤ │ └───┬───┘ ┌───────┤ ┌───┘ │ └───┐ └───┐ │
|
|
3021
|
+
8│ │▒▒▒│ ▒▒▒│ ▒▒▒ ▒▒▒│▒▒▒ ▒▒▒│ │▒▒▒ │▒▒▒ ▒▒▒│▒▒▒ ▒▒▒│▒▒▒ ▒▒▒│▒▒▒│
|
|
3022
|
+
├───┘ └───┐ └───┐ └───────┘ ┌───┘ ┌───┘ └───────┤ ┌───┤ │
|
|
3023
|
+
9│▒▒▒ ▒▒▒ ▒▒▒│▒▒▒ ▒▒▒│▒▒▒ │▒▒▒ ▒▒▒│▒▒▒ ▒▒▒ │▒▒▒│ │▒▒▒│
|
|
3024
|
+
├───────────┼───────┴───────┐ ┌───┴───┐ ├───┬───────────┐ ├───┘ └───┤
|
|
3025
|
+
10│ │ ▒▒▒ ▒▒▒│ │ ▒▒▒│ │ │▒▒▒ ▒▒▒ ▒▒▒│ │ │
|
|
3026
|
+
│ ┌───┐ └───────────┐ ├───────┼───┐ └───┤ └───────┐ └───┼───────┐ │
|
|
3027
|
+
11│ │▒▒▒│ ▒▒▒ ▒▒▒ │▒▒▒│ │▒▒▒│▒▒▒ ▒▒▒│ ▒▒▒ │▒▒▒ │▒▒▒ ▒▒▒│ │
|
|
3028
|
+
│ │ └───┐ ┌───┘ │ │ └───┐ │ │ ┌───┘ ┌───┘ │
|
|
3029
|
+
12│ │▒▒▒ ▒▒▒│ ▒▒▒│ ▒▒▒│ │▒▒▒ │▒▒▒│▒▒▒ ▒▒▒ ▒▒▒│ │▒▒▒ ▒▒▒│ │
|
|
3030
|
+
│ │ ┌───┴───┐ │ ┌───┘ ┌───┘ ┌───┴───┼───────┬───┴───┴───────┤ ┌───┤
|
|
3031
|
+
13│ │▒▒▒│ │▒▒▒│ │▒▒▒ │▒▒▒ ▒▒▒│▒▒▒ │▒▒▒ │▒▒▒ ▒▒▒ ▒▒▒ │ │▒▒▒│
|
|
3032
|
+
│ ├───┘ ├───┼───┘ ├───┬───┘ │ ├───────┐ │ │ │
|
|
3033
|
+
14│ │▒▒▒ ▒▒▒ │▒▒▒│ ▒▒▒ │▒▒▒│ ▒▒▒ │▒▒▒ ▒▒▒│ │▒▒▒ │ │▒▒▒│
|
|
3034
|
+
├───┘ ┌───────┘ │ ┌───┘ └───┐ ┌───┘ │ ├───────┘ │ │
|
|
3035
|
+
15│▒▒▒ ▒▒▒│ ▒▒▒ ▒▒▒│ ▒▒▒│▒▒▒ ▒▒▒ ▒▒▒│▒▒▒│ ▒▒▒│ │▒▒▒ ▒▒▒ │▒▒▒│
|
|
3036
|
+
├───────┴───┐ ┌───┤ └───────┬───┘ ├───────────┤ └───┐ │ │
|
|
3037
|
+
16│ ▒▒▒ ▒▒▒│▒▒▒│ │ ▒▒▒ │ ▒▒▒│▒▒▒ ▒▒▒ ▒▒▒│▒▒▒ │▒▒▒ ▒▒▒│▒▒▒│
|
|
3038
|
+
├───┐ ├───┘ └───────┐ ┌───┴───────┤ ┌───────┘ ┌───┐ ├───┐ └───┤
|
|
3039
|
+
17│▒▒▒│ ▒▒▒│ ▒▒▒ ▒▒▒ ▒▒▒│ │▒▒▒ ▒▒▒ │▒▒▒│ ▒▒▒│ │ │▒▒▒│ │
|
|
3040
|
+
│ └───┐ │ ┌───┐ ├───┴───┐ ├───┤ ┌───┐ │ ├───┘ └───┐ │
|
|
3041
|
+
18│▒▒▒ ▒▒▒│▒▒▒│ ▒▒▒│ │ │▒▒▒ │▒▒▒ │▒▒▒│ │ │▒▒▒│ │▒▒▒ ▒▒▒ ▒▒▒│ │
|
|
3042
|
+
│ ┌───┴───┴───────┘ ├───┘ │ ┌───┘ └───┘ │ │ └───────────┘ │
|
|
3043
|
+
19│▒▒▒│ ▒▒▒ ▒▒▒ ▒▒▒ ▒▒▒│▒▒▒ ▒▒▒ ▒▒▒│▒▒▒│▒▒▒ ▒▒▒ ▒▒▒ │▒▒▒│ │
|
|
3044
|
+
└───┴───────────────────┴───────────┴───┴───────────────┴───┴───────────────────┘
|
|
2959
3045
|
Solutions found: 1
|
|
2960
|
-
|
|
3046
|
+
status: OPTIMAL
|
|
3047
|
+
Time taken: 0.09 seconds
|
|
2961
3048
|
```
|
|
2962
3049
|
|
|
2963
3050
|
**Solved puzzle**
|
|
@@ -3128,26 +3215,42 @@ As the instructions say, the solution to this puzzle is not garunteed to be uniq
|
|
|
3128
3215
|
|
|
3129
3216
|
```python
|
|
3130
3217
|
Solution found
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3218
|
+
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1
|
|
3219
|
+
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
|
|
3220
|
+
┌───────────────────┬───────┬───────┬───────┬───────────────┐
|
|
3221
|
+
0│ . │ . . │ . . │ . . │ . . │
|
|
3222
|
+
├───────┬───┬───────┤ │ ├───────┼───────────┬───┤
|
|
3223
|
+
1│ . . │ │ . │ . . │ . . │ │ . │ │
|
|
3224
|
+
├───┬───┘ └───┐ └───┬───┴───┬───┘ └───────┬───┘ │
|
|
3225
|
+
2│ . │ │ . │ . . │ . │ │
|
|
3226
|
+
├───┤ └───────┼───────┼───┬───┐ ┌───┤ │
|
|
3227
|
+
3│ │ │ . . │ . │ │ │ │ . . │
|
|
3228
|
+
│ │ │ ├───┘ └───────┤ │ │
|
|
3229
|
+
4│ . │ . │ . . │ │ . │ │
|
|
3230
|
+
│ ├───────┐ └───────┤ │ │ ┌───┤
|
|
3231
|
+
5│ │ . │ . │ │ . │ │ . │
|
|
3232
|
+
├───┘ ┌───┤ │ ┌───┤ ├───┤ │
|
|
3233
|
+
6│ . │ . │ │ . │ │ │ . │ . │
|
|
3234
|
+
├───┬───┼───┴───┬───┐ │ │ └───┤ ├───┤
|
|
3235
|
+
7│ │ . │ │ . │ │ . │ . . │ . │ . │
|
|
3236
|
+
│ ├───┘ ┌───┴───┼───┐ ┌───┘ ├───┐ ├───┴───┤
|
|
3237
|
+
8│ . │ . . │ . . │ . │ │ │ │ │ . . │
|
|
3238
|
+
│ │ │ ├───┴───┤ │ ├───┤ │
|
|
3239
|
+
9│ │ . . │ . . │ . . │ │ . │ │ . . │
|
|
3240
|
+
├───┘ ┌───┴───────┤ ├───────┐ ┌───┤ │ └───────┤
|
|
3241
|
+
10│ │ . . │ . . │ . │ │ . │ │ │
|
|
3242
|
+
├───┬───┴───┐ └───┬───┘ ┌───┴───┴───┴───┤ │
|
|
3243
|
+
11│ . │ │ . . │ . │ │ . │
|
|
3244
|
+
├───┴───┐ └───┬───┬───┼───┬───┴───┐ ┌───┤ │
|
|
3245
|
+
12│ │ . . │ │ . │ │ . . │ . . │ . │ . │
|
|
3246
|
+
├───┐ │ │ └───┤ │ │ │ │ │
|
|
3247
|
+
13│ . │ . │ . . │ . . │ . │ . . │ . . │ . │ │
|
|
3248
|
+
│ │ └───┐ └───┐ │ ├───┬───┘ └───┼───────┐ │
|
|
3249
|
+
14│ . │ │ │ │ │ . │ │ . . │ │
|
|
3250
|
+
└───┴───────┴───────┴───┴───┴───┴───────────────┴───────┴───┘
|
|
3148
3251
|
Solutions found: 1
|
|
3149
3252
|
status: OPTIMAL
|
|
3150
|
-
Time taken: 0.
|
|
3253
|
+
Time taken: 0.06 seconds
|
|
3151
3254
|
```
|
|
3152
3255
|
|
|
3153
3256
|
**Solved puzzle**
|
|
@@ -3236,7 +3339,11 @@ Applying the solution to the puzzle visually:
|
|
|
3236
3339
|
|
|
3237
3340
|
Also called "Futoshiki" or Renzoku"
|
|
3238
3341
|
|
|
3239
|
-
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/unequal.html)
|
|
3342
|
+
* [**Play online 1**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/unequal.html)
|
|
3343
|
+
|
|
3344
|
+
* [**Play online 2**](https://www.puzzle-futoshiki.com/futoshiki-4x4-easy/) (Futoshiki variant)
|
|
3345
|
+
|
|
3346
|
+
* [**Play online 3**](https://www.puzzle-futoshiki.com/renzoku-4x4-easy/) (Renzoku variant)
|
|
3240
3347
|
|
|
3241
3348
|
* [**Instructions**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/doc/unequal.html#unequal)
|
|
3242
3349
|
|
|
@@ -3381,28 +3488,49 @@ solutions = binst.solve_and_print()
|
|
|
3381
3488
|
|
|
3382
3489
|
```python
|
|
3383
3490
|
Solution found
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3491
|
+
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
|
|
3492
|
+
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
|
|
3493
|
+
┌───┬───────────────┬───┬───────┬───────────┬───────────┬───┬───┬───────┬───────┐
|
|
3494
|
+
0│ X │ │ X │ X │ X │ X │ X │ │ X │ X X │
|
|
3495
|
+
│ └───┐ │ │ ┌───┘ ┌───┬───┴───┐ ┌───┘ │ │ ├───────┤
|
|
3496
|
+
1│ X │ X │ X │ │ X │ X │ X │ │ X │ │ X │ │
|
|
3497
|
+
├───────┴───┐ ├───┘ ├───────┘ │ ┌───┤ ├───┬───┘ └───┬───┘ │
|
|
3498
|
+
2│ X │ X │ X │ X │ X │ │ X │ X │ │ X │
|
|
3499
|
+
│ ┌───┐ ├───────┴───┬───┴───────┬───┴───┤ └───┘ │ └───────┐ │
|
|
3500
|
+
3│ X │ X │ │ X │ X X │ X │ │ X │ X │
|
|
3501
|
+
│ │ └───┤ ┌───────┤ │ └───┐ ┌───┤ ┌───────────┴───┤
|
|
3502
|
+
4│ │ X │ X │ │ │ X │ X │ │ X │ X X │
|
|
3503
|
+
│ ├───────┴───┘ │ ┌───────┴───────┐ │ │ └───┐ │ ┌───────┐ │
|
|
3504
|
+
5│ │ X X │ │ X X │ │ │ X X │ │ │ X X │ │
|
|
3505
|
+
├───┴───┬───────────────┼───┼───────────┬───┴───┼───┘ ┌───┴───┼───┴───┬───┴───┤
|
|
3506
|
+
6│ X │ X │ X │ X │ X │ │ X │ X │ X │
|
|
3507
|
+
│ │ ┌───┬───────┤ │ ┌───┤ ┌───┴───┬───┴───┐ ├───┐ │ │
|
|
3508
|
+
7│ X │ X │ X │ │ X │ │ X │ │ X │ X X │ │ │ X │ X │
|
|
3509
|
+
├───┬───┴───┘ │ ┌───┴───┘ │ │ └───┐ └───┬───┘ │ └───┤ ┌───┤
|
|
3510
|
+
8│ X │ │ X │ X │ │ │ │ X │ X │ │ │
|
|
3511
|
+
│ └───┐ ┌───┤ ├───┬───────────┘ │ ┌───┘ ├───┬───┘ └───┘ │
|
|
3512
|
+
9│ X │ X │ │ X │ │ X │ X │ X │ │ X │
|
|
3513
|
+
├───┐ ├───┘ ├───┘ ├───────┐ ┌───┤ │ ┌───────┤ └───────────┬───────┤
|
|
3514
|
+
10│ X │ │ │ │ X X │ │ X │ │ │ X X │ X │ X │
|
|
3515
|
+
│ └───┤ ┌───┴───┐ └───┬───┴───┘ ├───┴───┴───────┴───┐ ┌───────┴───┐ │
|
|
3516
|
+
11│ X │ │ X X │ │ X │ X │ │ X │ │
|
|
3517
|
+
├───────┤ └───┬───┘ └───┬───────┴───┬───┐ ┌───┤ ├───────┐ │ │
|
|
3518
|
+
12│ X │ X │ X │ X │ X │ │ X │ │ X │ X │ X │
|
|
3519
|
+
│ ┌───┘ ┌───┴───┐ ├───┐ │ ├───┐ │ │ └───┐ │ │ │
|
|
3520
|
+
13│ X │ │ X X │ X │ │ X │ X │ │ X │ │ X │ X │ │ │
|
|
3521
|
+
├───┘ ├───┬───┴───────────┘ └───┬───┴───┘ └───┘ ├───────┴───┼───┴───┤
|
|
3522
|
+
14│ X │ │ X X │ X │ X X │ │
|
|
3523
|
+
├───┐ │ └───┬───────────┬───┐ └───┬───────────────┴───┬───────┘ │
|
|
3524
|
+
15│ │ │ X X │ X │ X │ │ X X │ X X │
|
|
3525
|
+
│ ├───┬───┴───┬───┘ ┌───────┤ └───────┼───┐ ┌───┬───┴───────────────┤
|
|
3526
|
+
16│ │ X │ │ X │ X │ X │ X │ │ X │ X X │
|
|
3527
|
+
│ │ │ └───────┤ ┌───┴───────────┤ └───┬───┤ │ ┌───┬───────┐ │
|
|
3528
|
+
17│ │ X │ X X │ │ X X │ X │ X │ │ │ │ X X │ │
|
|
3529
|
+
│ └───┴───┐ ┌───────┘ └───┬───┬───────┴───┐ │ │ └───┤ │ └───┤
|
|
3530
|
+
18│ X X │ │ X │ │ X X │ │ │ X │ X │ │
|
|
3531
|
+
├───────────┴───┴───┬───────┬───┘ └───────┬───┘ │ └───────┤ │ ┌───────┤
|
|
3532
|
+
19│ X X │ X X │ X X │ │ X │ X │ │ X X │
|
|
3533
|
+
└───────────────────┴───────┴───────────────┴───────┴───────────┴───┴───┴───────┘
|
|
3406
3534
|
Solutions found: 1
|
|
3407
3535
|
status: OPTIMAL
|
|
3408
3536
|
Time taken: 0.04 seconds
|
|
@@ -3418,7 +3546,7 @@ Applying the solution to the puzzle visually:
|
|
|
3418
3546
|
|
|
3419
3547
|
## Slitherlink (Puzzle Type #39)
|
|
3420
3548
|
|
|
3421
|
-
Also known as Fences, Loop the Loop, and Loopy
|
|
3549
|
+
Also known as Fences, Loop the Loop, and Loopy.
|
|
3422
3550
|
|
|
3423
3551
|
* [**Play online 1**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/loopy.html)
|
|
3424
3552
|
|
|
@@ -3735,7 +3863,7 @@ Applying the solution to the puzzle visually:
|
|
|
3735
3863
|
|
|
3736
3864
|
## Rectangles (Puzzle Type #42)
|
|
3737
3865
|
|
|
3738
|
-
Also
|
|
3866
|
+
Also known as Shikaku.
|
|
3739
3867
|
|
|
3740
3868
|
* [**Play online**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/rect.html)
|
|
3741
3869
|
|
|
@@ -4232,7 +4360,7 @@ Time taken: 38.04 seconds
|
|
|
4232
4360
|
|
|
4233
4361
|
## Shingoki (Puzzle Type #47)
|
|
4234
4362
|
|
|
4235
|
-
Also
|
|
4363
|
+
Also known as Semaphores.
|
|
4236
4364
|
|
|
4237
4365
|
* [**Play online**](https://www.puzzle-shingoki.com/)
|
|
4238
4366
|
|
|
@@ -4591,7 +4719,7 @@ Time taken: 0.00 seconds
|
|
|
4591
4719
|
|
|
4592
4720
|
## Shakashaka (Puzzle Type #50)
|
|
4593
4721
|
|
|
4594
|
-
Also
|
|
4722
|
+
Also known as Proof of Quilt.
|
|
4595
4723
|
|
|
4596
4724
|
* [**Play online**](https://www.puzzle-shakashaka.com/)
|
|
4597
4725
|
|
|
@@ -5074,6 +5202,149 @@ Note that the solved solution on the bottom left says that only 18 moves were us
|
|
|
5074
5202
|
|
|
5075
5203
|
---
|
|
5076
5204
|
|
|
5205
|
+
## Pipes (Puzzle Type #55)
|
|
5206
|
+
|
|
5207
|
+
Also known as Net.
|
|
5208
|
+
|
|
5209
|
+
* [**Play online 1**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/net.html)
|
|
5210
|
+
|
|
5211
|
+
* [**Play online 2**](https://www.puzzle-pipes.com/)
|
|
5212
|
+
|
|
5213
|
+
* [**Instructions**](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/doc/net.html#net)
|
|
5214
|
+
|
|
5215
|
+
* [**Solver Code**][55]
|
|
5216
|
+
|
|
5217
|
+
<details>
|
|
5218
|
+
<summary><strong>Rules</strong></summary>
|
|
5219
|
+
|
|
5220
|
+
You are given a grid of cells where each cell has 1, 2, 3, or 4 connections to its neighbors. Each cell can be freely rotated in multiple of 90 degrees, thus your can rotate the cells to be one of four possible states.
|
|
5221
|
+
|
|
5222
|
+
The goal is to create a single fully connected graph where each cell's connection must be towards another cell's connection. No loose ends or loops are allowed.
|
|
5223
|
+
|
|
5224
|
+
</details>
|
|
5225
|
+
|
|
5226
|
+
**Unsolved puzzle**
|
|
5227
|
+
|
|
5228
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/pipes_unsolved.png" alt="Pipes unsolved" width="500">
|
|
5229
|
+
|
|
5230
|
+
Code to utilize this package and solve the puzzle:
|
|
5231
|
+
|
|
5232
|
+
(Note: cells with 1 or 3 active connections only have 1 unique orientation under rotational symmetry. However, cells with 2 active connections can be either a straight line (2I) or curved line (2L))
|
|
5233
|
+
|
|
5234
|
+
```python
|
|
5235
|
+
import numpy as np
|
|
5236
|
+
from puzzle_solver import pipes_solver as solver
|
|
5237
|
+
board=np.array([
|
|
5238
|
+
[ '1 ', '3 ', '3 ', '3 ', '1 ', '1 ', '2L', '2L', '2I', '1 ' ],
|
|
5239
|
+
[ '1 ', '1 ', '1 ', '3 ', '2I', '1 ', '2I', '3 ', '2I', '1 ' ],
|
|
5240
|
+
[ '2I', '1 ', '1 ', '3 ', '2L', '1 ', '3 ', '2I', '1 ', '1 ' ],
|
|
5241
|
+
[ '2I', '2I', '1 ', '3 ', '3 ', '3 ', '2L', '3 ', '3 ', '2L' ],
|
|
5242
|
+
[ '3 ', '3 ', '2I', '3 ', '1 ', '3 ', '2I', '2L', '1 ', '2L' ],
|
|
5243
|
+
[ '1 ', '1 ', '3 ', '2I', '3 ', '2L', '1 ', '1 ', '2L', '2L' ],
|
|
5244
|
+
[ '1 ', '1 ', '3 ', '1 ', '1 ', '1 ', '3 ', '3 ', '3 ', '2L' ],
|
|
5245
|
+
[ '3 ', '2I', '3 ', '3 ', '2L', '3 ', '3 ', '2I', '2L', '1 ' ],
|
|
5246
|
+
[ '1 ', '1 ', '3 ', '3 ', '3 ', '3 ', '1 ', '2L', '3 ', '2L' ],
|
|
5247
|
+
[ '1 ', '2I', '3 ', '2I', '1 ', '1 ', '1 ', '3 ', '1 ', '1 ' ],
|
|
5248
|
+
])
|
|
5249
|
+
binst = solver.Board(board=board)
|
|
5250
|
+
solutions = binst.solve_and_print()
|
|
5251
|
+
```
|
|
5252
|
+
|
|
5253
|
+
**Script Output**
|
|
5254
|
+
|
|
5255
|
+
```python
|
|
5256
|
+
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']]
|
|
5267
|
+
Solutions found: 1
|
|
5268
|
+
status: OPTIMAL
|
|
5269
|
+
Time taken: 5.65 seconds
|
|
5270
|
+
```
|
|
5271
|
+
|
|
5272
|
+
**Solved puzzle**
|
|
5273
|
+
|
|
5274
|
+
<img src="https://raw.githubusercontent.com/Ar-Kareem/puzzle_solver/master/images/pipes_solved.png" alt="Pipes solved" width="500">
|
|
5275
|
+
|
|
5276
|
+
---
|
|
5277
|
+
|
|
5278
|
+
## Connect the Dots (Puzzle Type #56)
|
|
5279
|
+
|
|
5280
|
+
* [**Mobile App (Android)**](https://play.google.com/store/apps/details?id=com.playvalve.connect.dots&hl=en_US)
|
|
5281
|
+
|
|
5282
|
+
* [**Mobile App (iOS)**](https://apps.apple.com/us/app/dot-link-connect-the-dots/id6444312485)
|
|
5283
|
+
|
|
5284
|
+
* [**Solver Code**][56]
|
|
5285
|
+
|
|
5286
|
+
<details>
|
|
5287
|
+
<summary><strong>Rules</strong></summary>
|
|
5288
|
+
|
|
5289
|
+
You are given a grid of empty cells and 2 filled cell per color. The goal is to connect the dots of the same color to form a single fully connected graph for each color.
|
|
5290
|
+
</details>
|
|
5291
|
+
|
|
5292
|
+
**Unsolved puzzle**
|
|
5293
|
+
|
|
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">
|
|
5295
|
+
|
|
5296
|
+
Code to utilize this package and solve the puzzle:
|
|
5297
|
+
|
|
5298
|
+
```python
|
|
5299
|
+
import numpy as np
|
|
5300
|
+
from puzzle_solver import connect_the_dots_solver as solver
|
|
5301
|
+
board = np.array([
|
|
5302
|
+
['R', ' ', 'B', ' ', ' ', ' ', ' ', ' '],
|
|
5303
|
+
['Y', ' ', ' ', 'R', 'G', ' ', 'G', ' '],
|
|
5304
|
+
[' ', 'M', ' ', ' ', ' ', 'P', ' ', ' '],
|
|
5305
|
+
[' ', 'O', ' ', ' ', ' ', 'M', ' ', ' '],
|
|
5306
|
+
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
|
|
5307
|
+
['Br', 'B', ' ', ' ', 'Y', 'O', ' ', ' '],
|
|
5308
|
+
[' ', ' ', ' ', ' ', ' ', 'P', ' ', ' '],
|
|
5309
|
+
[' ', ' ', ' ', 'Br', ' ', ' ', ' ', ' '],
|
|
5310
|
+
])
|
|
5311
|
+
binst = solver.Board(board=board)
|
|
5312
|
+
solutions = binst.solve_and_print()
|
|
5313
|
+
```
|
|
5314
|
+
|
|
5315
|
+
**Script Output**
|
|
5316
|
+
|
|
5317
|
+
```python
|
|
5318
|
+
Solution found
|
|
5319
|
+
0 1 2 3 4 5 6 7
|
|
5320
|
+
┌───────┬───────────────────────┐
|
|
5321
|
+
0│ R R │ B B B B B B │
|
|
5322
|
+
├───┐ └───────┬───────────┐ │
|
|
5323
|
+
1│ Y │ R R R │ G G G │ B │
|
|
5324
|
+
│ ├───────────┴───┬───────┤ │
|
|
5325
|
+
2│ Y │ M M M M │ P P │ B │
|
|
5326
|
+
│ ├───────────┐ └───┐ │ │
|
|
5327
|
+
3│ Y │ O O O │ M M │ P │ B │
|
|
5328
|
+
│ └───────┐ └───────┤ │ │
|
|
5329
|
+
4│ Y Y Y │ O O O │ P │ B │
|
|
5330
|
+
├───┬───┐ └───────┐ │ │ │
|
|
5331
|
+
5│Br │ B │ Y Y Y │ O │ P │ B │
|
|
5332
|
+
│ │ └───────────┼───┘ │ │
|
|
5333
|
+
6│Br │ B B B B │ P P │ B │
|
|
5334
|
+
│ └───────────┐ └───────┘ │
|
|
5335
|
+
7│Br Br Br Br │ B B B B │
|
|
5336
|
+
└───────────────┴───────────────┘
|
|
5337
|
+
Solutions found: 1
|
|
5338
|
+
status: OPTIMAL
|
|
5339
|
+
Time taken: 2.91 seconds
|
|
5340
|
+
```
|
|
5341
|
+
|
|
5342
|
+
**Solved puzzle**
|
|
5343
|
+
|
|
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">
|
|
5345
|
+
|
|
5346
|
+
---
|
|
5347
|
+
|
|
5077
5348
|
---
|
|
5078
5349
|
|
|
5079
5350
|
## Why SAT / CP-SAT?
|
|
@@ -5156,7 +5427,7 @@ Issues and PRs welcome!
|
|
|
5156
5427
|
[29]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/battleships "puzzle_solver/src/puzzle_solver/puzzles/battleships at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5157
5428
|
[30]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/kakurasu "puzzle_solver/src/puzzle_solver/puzzles/kakurasu at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5158
5429
|
[31]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/star_battle "puzzle_solver/src/puzzle_solver/puzzles/star_battle at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5159
|
-
[32]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/
|
|
5430
|
+
[32]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/star_battle "puzzle_solver/src/puzzle_solver/puzzles/star_battle_shapeless at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5160
5431
|
[33]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/lits "puzzle_solver/src/puzzle_solver/puzzles/lits at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5161
5432
|
[34]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/black_box "puzzle_solver/src/puzzle_solver/puzzles/black_box at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5162
5433
|
[35]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/galaxies "puzzle_solver/src/puzzle_solver/puzzles/galaxies at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
@@ -5173,9 +5444,11 @@ Issues and PRs welcome!
|
|
|
5173
5444
|
[46]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/heyawake "puzzle_solver/src/puzzle_solver/puzzles/heyawake at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5174
5445
|
[47]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/shingoki "puzzle_solver/src/puzzle_solver/puzzles/shingoki at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5175
5446
|
[48]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/tapa "puzzle_solver/src/puzzle_solver/puzzles/tapa at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5176
|
-
[49]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/
|
|
5447
|
+
[49]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/binairo "puzzle_solver/src/puzzle_solver/puzzles/binairo_plus at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5177
5448
|
[50]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/shakashaka "puzzle_solver/src/puzzle_solver/puzzles/shakashaka at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5178
5449
|
[51]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/kakuro "puzzle_solver/src/puzzle_solver/puzzles/kakuro at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5179
5450
|
[52]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/sudoku "puzzle_solver/src/puzzle_solver/puzzles/sudoku at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5180
5451
|
[53]: https://github.com/Ar-Kareem/puzzle_solver/tree/master/src/puzzle_solver/puzzles/sudoku "puzzle_solver/src/puzzle_solver/puzzles/sudoku at master · Ar-Kareem/puzzle_solver · GitHub"
|
|
5181
5452
|
[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
|
+
[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
|
+
[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"
|